- PVSM.RU - https://www.pvsm.ru -
В данной статье мне бы хотелось рассказать об одном способе связывания Swift с базой данных. Хочу отметить, что в целом материал не новый, но основное в нем — это пошаговая инструкция как установить SQLite.Swift [1] и как добавить базу данных в свой проект, что может пригодиться начинающим.
На просторах интернета очень много различных роликов и статей о том, каким образом можно связать базу данных SQLite [3] и Swift [2]. В основном попадались такие варианты, как использование FMDB [4], или SQLite.Swift [1], или Core Data [5], но, к сожалению, не удалось найти полностью пошаговой инструкции (если так моно выразиться). Для решения своей задачи был выбран SQLite.Swift [1]t. О нем и пойдет речь далее.
Как указано на GitHub [6], существует три способа установки SQLite.Swift: Carthage [7], CocoaPods [8] и Swift Package Manager [9]. При написании приложения был выбран второй способ: CocoaPods [8].
Для начала можно создать новый проект в Xcode [10] (я назову его «myProject») используя шаблон «Single View App». Вы так же можете использовать уже Ваш существующий проект.
И так, открываем «Терминал» на Вашем 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 [1] в наш проект завершена и мы можем закрыть наш Терминал.
Напоследок, расскажу о том, как добавить базу данных в проект.
На самом деле существуют различные способы добавления или создания базы данных. О них описано в документации [11]. Я же покажу это на примере «Read-Only Database [12]».
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 [1] для решения своей задачи. Огромное спасибо хочу сказать разработчику Stephen Celis [13] за разработку и Вам, дорогие читатели! Надеюсь, данный материал кому-нибудь пригодиться. Всего хорошего!
Автор: друже
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sqlite/299613
Ссылки в тексте:
[1] SQLite.Swift: https://github.com/stephencelis/SQLite.swift
[2] Swift: https://www.apple.com/ru/swift/
[3] SQLite: https://www.sqlite.org/index.html
[4] FMDB: https://github.com/ccgus/fmdb
[5] Core Data: https://developer.apple.com/documentation/coredata
[6] GitHub: https://github.com
[7] Carthage: https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#carthage
[8] CocoaPods: https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#cocoapods
[9] Swift Package Manager: https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#swift-package-manager
[10] Xcode: https://developer.apple.com/xcode/
[11] документации: https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md
[12] Read-Only Database: https://github.com/stephencelis/SQLite.swift/blob/master/Documentation/Index.md#read-only-databases
[13] Stephen Celis: https://github.com/stephencelis
[14] Источник: http://habrahabr.ru/sandbox/125036/
Нажмите здесь для печати.