База данных Realm в iOS разработке
Антонов Владислав Александрович, студент магистратуры
Чувашский государственный университет имени И. Н. Ульянова (г. Чебоксары)
В этой статье разобраны основные принципы работы с базой данных Realm: создание модели, выполнение запросов и обновление записей, которые применяются при разработке iOS приложений, при использовании языка Swift.
Ключевые слова: программирование, база данных, мобильная разработка, Swift.
Realm — это кроссплатформенная база данных, разработанная для мобильных приложений, и которая является хорошей альтернативой Core Data в iOS разработке.
Для того, чтобы интегрировать Realm в свой проект необходимо воспользоваться менеджером зависимостей CocoaPods. В корневой папке проекта создайте новый файл Podfile и добавьте в него следующий код:
После этого, чтобы все установленные библиотеки стали доступны в проекте, необходимо продолжить работу с созданным после установки подов файлом Project Name.xcworkspace.
Чтобы получить доступ к базе данных в определенном файле приложения, перед этим необходимо импортировать базу стандартным import RealmSwift в начале файла.
В создании моделей, Realm использует классы. Для примера давайте условно создадим модель пользователя:
В Таблице 1 можно подробно ознакомиться с типами данных в модели:
Таблица 1
Тип |
Обязательное значение |
Опциональное значение |
Bool |
@objc dynamic var value = false |
let value = RealmOptional
|
Int |
@objc dynamic var value = 0 |
let value = RealmOptional
|
Float |
@objc dynamic var value: Float = 0.0 |
let value = RealmOptional
|
Double |
@objc dynamic var value: Double = 0.0 |
let value = RealmOptional
|
String |
@objc dynamic var value = "" |
@objc dynamic var value: String? = nil |
Data |
@objc dynamic var value = Data() |
@objc dynamic var value: Data? = nil |
Date |
@objc dynamic var value = Date() |
@objc dynamic var value: Date? = nil |
Object |
Обязательно опциональный |
@objc dynamic var value: Class? |
List |
let value = List
|
Только обязательное значение |
LinkObj |
let value = LinkingObjects(fromType: Class.self, property: "property") |
Только обязательное |
Экземпляры класса Object — это «живые», автоматически обновляемые представления данных. При изменении свойств объекта его не нужно обновлять. Изменение его свойств будет немедленно применено в любых других экземплярах, ссылающихся на тот же самый объект.
Создать новый объект можно несколькими способами. Наиболее очевидным является использование назначенного инициализатора для создания объекта, но также объекты можно создавать из словарей, используя соответствующие ключи и значения:
После того, как добавили объект в базу, можно продолжить использовать его, и все изменения, которые в него внесены, будут сохранены. Любые изменения будут доступны другим потокам, использующим то же самый экземпляр Realm, когда транзакция записи будет зафиксирована.
Это не только делает Realm быстрым и эффективным, но и позволяет коду быть более простым и читаемым. Если интерфейс приложения зависит от конкретного объекта Realm, не нужно беспокоиться об обновлении или перезагрузке его перед тем, как обновить UI. Можно подписаться на уведомления Realm, чтобы знать, когда данные в объекте Realm изменяются, чтобы оследить, когда UI приложения должен быть обновлен.
А теперь, чтобы воспользоваться этими данными и, к примеру, изменить имя пользователя с “Mark” на “Luke”, давайте найдем его внутри базы данных через фильтрацию по id:
В данной статье произведен обзор базы данных Realm, на примере использования её в iOS разработке. Рассмотрен основной функционал, как интегрировать базу данных в проект, добавление, изменение и удаление записей из хранилища базы данных.