Pull to refresh

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

Введение


В данной статье мне бы хотелось рассказать об одном способе связывания 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 за разработку и Вам, дорогие читатели! Надеюсь, данный материал кому-нибудь пригодиться. Всего хорошего!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.