Введение
В данной статье мне бы хотелось рассказать об одном способе связывания Swift с базой данных. Хочу отметить, что в целом материал не новый, но основное в нем — это пошаговая инструкция как установить SQLite.Swift и как добавить базу данных в свой проект, что может пригодиться начинающим.
Приложения простое, вот только возникла проблема: как связать базу данных и 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 и получаем содержимое каталога, который выбран на данный момент.
2. Далее необходимо указать, где расположен наш проект. Для удобства можно зайти в папку нашего проекта, нажать на и во всплывающем окне выбрать «Скопировать путь до <Ваша папка>». В моем случае это окно выглядит вот так:
Возвращаемся в терминал и вводим cd и вставляем (cmd+V) скопированный путь. Повторно используем ls -la для просмотра содержимого.
3. Теперь нам необходимо установить CocoaPods. Для этого вводим в Терминале: Sudo gem install cocoapods
4. Вводим пароль от Вашего пользователя (пароль НЕ печатается и это нормально, после ввода возможно потребуется нажать Enter). Установка займет какое-то время. Также стоит отметить, что количество установленных файлов может отличаться от моего.
5. По завершению установки вводим Pod init и проверяем все ли в порядке командой ls -la. В полученном списке должен находиться Podfile.
6. Далее вводим nano Podfile и попадаем в наш Podfile.
7. Здесь меняем версию платформы IOS. После строки «use_frameworks!» вводим следующий код (внимательно следите за регистрами):
pod ‘SQLite.swift’, :git => ‘https://github.com/stephencelis/SQLite.swift.git’, :branch => ‘master’
Нажимаем для выхода из «GNU nano» Ctrl+X, затем подтверждаем сохранение «Y», а после нажимаем «Enter» и попадаем обратно в Терминал.
8. Далее вводим cat Podfile. Терминал нам выдаст то, что мы вводили в «GNU nano»
9. Для скачивания и установки вводим Pod install. Здесь же мы видим, что если Ваш проект был открыт, то Терминал попросит закрыть его.
10. Вновь проверяем содержание нашей папки с проектом: ls -la
11. Теперь открываем наш проект. Можно как обычно через Xcode, а можно и через Терминал: open myProject.xcworkspace
Установка SQLite.Swift в наш проект завершена и мы можем закрыть наш Терминал.
Напоследок, расскажу о том, как добавить базу данных в проект.
Добавление базы данных в проект
На самом деле существуют различные способы добавления или создания базы данных. О них описано в документации. Я же покажу это на примере «Read-Only Database».
1. Для начала в нашем проекте в Xcode можно создать новую папку, например: Database. Это необязательно, но в дальнейшем поможет Вам легче ориентироваться в проекте.
2. Теперь перетаскиваем нашу базу данных (я назвал её TableDB, в формате .db) в эту папку. Стоит отметить, что файл должен быть формата .db, .sqlite, .sqlite3, .db3.
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 Если же не удалось установить соединение, то выдай ошибку.
4. И завершающим шагом является добавление нашей базы данных в TARGETS, а именно в Build Phases в строке Copy Bundle Resources.
Нажимаем cmd+B и видим, что ошибок в нашем проекте нет.
Заключение
Таким образом я использовал SQLite.Swift для решения своей задачи. Огромное спасибо хочу сказать разработчику Stephen Celis за разработку и Вам, дорогие читатели! Надеюсь, данный материал кому-нибудь пригодиться. Всего хорошего!
Автор: друже