Установка SQLite.Swift (CocoaPods)

в 17:59, , рубрики: sqlite, swift

Введение

В данной статье мне бы хотелось рассказать об одном способе связывания Swift с базой данных. Хочу отметить, что в целом материал не новый, но основное в нем — это пошаговая инструкция как установить SQLite.Swift и как добавить базу данных в свой проект, что может пригодиться начинающим.

Предисловие

При написании своего приложения для IOS было необходимо использовать существующую таблицу. Само приложение очень простое. Существует некая таблица с определенным количеством строк и столбцов. Каждому столбцу соответствует свое текстовое поле (TextField). Пользователь вводит число в любой TextField нажимает «Готово» и во всех остальных текстовых полях автоматически подгружаются значения из таблицы. В случае если такого числа нет, то необходимо выполнять интерполяцию чисел взятых из двух ближайших строк.
Приложения простое, вот только возникла проблема: как связать базу данных и Swift.


На просторах интернета очень много различных роликов и статей о том, каким образом можно связать базу данных SQLite и Swift. В основном попадались такие варианты, как использование FMDB, или SQLite.Swift, или Core Data, но, к сожалению, не удалось найти полностью пошаговой инструкции (если так моно выразиться). Для решения своей задачи был выбран SQLite.Swiftt. О нем и пойдет речь далее.

Как указано на GitHub, существует три способа установки SQLite.Swift: Carthage, CocoaPods и Swift Package Manager. При написании приложения был выбран второй способ: CocoaPods.

Для начала можно создать новый проект в Xcode (я назову его «myProject») используя шаблон «Single View App». Вы так же можете использовать уже Ваш существующий проект.

Установка SQLite.swift

И так, открываем «Терминал» на Вашем Mac через Launchpad или Spotlight и поехали:
1. Вводим ls -la и получаем содержимое каталога, который выбран на данный момент.
image
2. Далее необходимо указать, где расположен наш проект. Для удобства можно зайти в папку нашего проекта, нажать на image и во всплывающем окне выбрать «Скопировать путь до <Ваша папка>». В моем случае это окно выглядит вот так:
image
Возвращаемся в терминал и вводим cd и вставляем (cmd+V) скопированный путь. Повторно используем ls -la для просмотра содержимого.
image
3. Теперь нам необходимо установить CocoaPods. Для этого вводим в Терминале: Sudo gem install cocoapods
image
4. Вводим пароль от Вашего пользователя (пароль НЕ печатается и это нормально, после ввода возможно потребуется нажать Enter). Установка займет какое-то время. Также стоит отметить, что количество установленных файлов может отличаться от моего.
image
5. По завершению установки вводим Pod init и проверяем все ли в порядке командой ls -la. В полученном списке должен находиться Podfile.
image
6. Далее вводим nano Podfile и попадаем в наш Podfile.
image
7. Здесь меняем версию платформы IOS. После строки «use_frameworks!» вводим следующий код (внимательно следите за регистрами):
pod ‘SQLite.swift’, :git => ‘https://github.com/stephencelis/SQLite.swift.git’, :branch => ‘master’
image
Нажимаем для выхода из «GNU nano» Ctrl+X, затем подтверждаем сохранение «Y», а после нажимаем «Enter» и попадаем обратно в Терминал.

8. Далее вводим cat Podfile. Терминал нам выдаст то, что мы вводили в «GNU nano»
image
9. Для скачивания и установки вводим Pod install. Здесь же мы видим, что если Ваш проект был открыт, то Терминал попросит закрыть его.
image
10. Вновь проверяем содержание нашей папки с проектом: ls -la
image
11. Теперь открываем наш проект. Можно как обычно через Xcode, а можно и через Терминал: open myProject.xcworkspace
image

Установка SQLite.Swift в наш проект завершена и мы можем закрыть наш Терминал.

Напоследок, расскажу о том, как добавить базу данных в проект.

Добавление базы данных в проект

На самом деле существуют различные способы добавления или создания базы данных. О них описано в документации. Я же покажу это на примере «Read-Only Database».

1. Для начала в нашем проекте в Xcode можно создать новую папку, например: Database. Это необязательно, но в дальнейшем поможет Вам легче ориентироваться в проекте.
image
2. Теперь перетаскиваем нашу базу данных (я назвал её TableDB, в формате .db) в эту папку. Стоит отметить, что файл должен быть формата .db, .sqlite, .sqlite3, .db3.
image
3. Создаем новый Swift-файл и добавляем в него следующий код:
import SQLite
class Database {
static let shared = Database()
public let connection: Connection?
private init(){
do {
let dbPath = Bundle.main.path(forResource: "tableVukalovich", ofType: "db")!
connection = try Connection(dbPath)
} catch {
connection = nil
let nserror = error as NSError
print ("Cannot connect to Database. Error is: (nserror), (nserror.userInfo)")
}
}
}

Данный код сначала импортирует модуль SQLite. Затем создается новый класс со статической и публичной переменными. После чего происходит инициализация следующим образом:
3.1 Пытаемся установить соединение с базой данных;
3.2 В случае «успеха» соединение установиться;
3.3 Если же не удалось установить соединение, то выдай ошибку.
image
4. И завершающим шагом является добавление нашей базы данных в TARGETS, а именно в Build Phases в строке Copy Bundle Resources.
image
Нажимаем cmd+B и видим, что ошибок в нашем проекте нет.

Заключение

Таким образом я использовал SQLite.Swift для решения своей задачи. Огромное спасибо хочу сказать разработчику Stephen Celis за разработку и Вам, дорогие читатели! Надеюсь, данный материал кому-нибудь пригодиться. Всего хорошего!

Автор: друже

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js