База данных Realm в iOS разработке | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 27 апреля, печатный экземпляр отправим 1 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №12 (354) март 2021 г.

Дата публикации: 18.03.2021

Статья просмотрена: 443 раза

Библиографическое описание:

Антонов, В. А. База данных Realm в iOS разработке / В. А. Антонов. — Текст : непосредственный // Молодой ученый. — 2021. — № 12 (354). — С. 12-15. — URL: https://moluch.ru/archive/354/79325/ (дата обращения: 19.04.2024).



База данных Realm в iOS разработке

Антонов Владислав Александрович, студент магистратуры

Чувашский государственный университет имени И. Н. Ульянова (г. Чебоксары)

В этой статье разобраны основные принципы работы с базой данных Realm: создание модели, выполнение запросов и обновление записей, которые применяются при разработке iOS приложений, при использовании языка Swift.

Ключевые слова: программирование, база данных, мобильная разработка, Swift.

Realm — это кроссплатформенная база данных, разработанная для мобильных приложений, и которая является хорошей альтернативой Core Data в iOS разработке.

Для того, чтобы интегрировать Realm в свой проект необходимо воспользоваться менеджером зависимостей CocoaPods. В корневой папке проекта создайте новый файл Podfile и добавьте в него следующий код:

Сохраните и закройте его. Теперь откройте папку проекта в терминале и выполните команду pod install, тем самым CocoaPods обратится к Podfile файлу и установит все необходимые библиотеки и фреймворки, которые там указаны.

После этого, чтобы все установленные библиотеки стали доступны в проекте, необходимо продолжить работу с созданным после установки подов файлом Project Name.xcworkspace.

Чтобы получить доступ к базе данных в определенном файле приложения, перед этим необходимо импортировать базу стандартным import RealmSwift в начале файла.

В создании моделей, Realm использует классы. Для примера давайте условно создадим модель пользователя:

В этом примере все значения или пустая строка или равняются нулю, потому что сейчас только определяется модель и этими значениями указывается, какой тип данных должен храниться в той или иной переменной. Конкретно, в этом примере, все значения обязательно должны быть указаны при создании объекта, но также 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 быстрым и эффективным, но и позволяет коду быть более простым и читаемым. Если интерфейс приложения зависит от конкретного объекта Realm, не нужно беспокоиться об обновлении или перезагрузке его перед тем, как обновить UI. Можно подписаться на уведомления Realm, чтобы знать, когда данные в объекте Realm изменяются, чтобы оследить, когда UI приложения должен быть обновлен.

А теперь, чтобы воспользоваться этими данными и, к примеру, изменить имя пользователя с “Mark” на “Luke”, давайте найдем его внутри базы данных через фильтрацию по id:

Если же объект необходимо удалить из базы, то сделать это можно следующим образом:

Работая с любой базой данных, рано или поздно встанет вопрос, что модели необходимо изменить, например, добавить или удалить из них какие-нибудь свойства. Так как Realm использует для определения моделей стандартные классы Swift, изменять модели легко как любой другой класс, просто удалив определение переменной. Давайте вернемся к объекту User и удалим из него значение secondName. После этого он будет выглядеть вот так:

После этих изменений при запуске приложения, если уже сохранили какой-нибудь объект с предыдущей версией модели, то возникнет несоответствие между тем, что Realm видит в коде, и данными, которые уже хранит Realm. Когда это произойдет, при попытке работы с базой будет возникать ошибка, и чтобы это исправить необходимо провести миграцию данных от старой модели к новой. Код всех миграций должен находиться в AppDelegate вашего приложения внутри функции application (application:didFinishLaunchingWithOptions:):

Давайте подробно разберемся в коде выше. Создан новый объект конфигурации и в нем указана новая версия схемы. Она должна быть выше, чем предыдущая. Если до этого версия схемы не была указан, то стандартно она равняется 0. После этого идет migrationBlock, который автоматически вызывается, когда открывается Realm, версия схемы которого ниже, чем указанная выше. И далее стандартными if/else конструкциями можно более точно настроить каждую из миграций. Конкретно в данном случае, для того чтобы удалить одно из свойств модели, не нужно делать ничего, кроме как указать то, что версия схемы изменилась. Realm автоматически определяет новые и удаленные свойства. Далее необходимо указать, как использовать новый объект конфигурации для стандартного хранилища Realm. После этого при вызове любого экземпляра Realm миграция произойдет автоматически.

В данной статье произведен обзор базы данных Realm, на примере использования её в iOS разработке. Рассмотрен основной функционал, как интегрировать базу данных в проект, добавление, изменение и удаление записей из хранилища базы данных.

Основные термины (генерируются автоматически): база данных, баз данных, версия схемы, изменение, код, модель, обязательное значение.


Похожие статьи

Особенности применения баз данных и систем управления...

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

Разработка базы данных для отдела кадров в программе...

Для создания базы данных «Кадры» автором были определены и описаны основные сущности и атрибуты, заданы первичные и альтернативные ключи, построены связи между ними, описаны логическая и физическая модели базы данных, её генерация, создание и регистрация базы...

Принципы разработки и создания структуры базы данных

– иерархическая модель базы данных — использует

Проектирование баз данных — процесс создания схемы базы данных и определения необходимых ограничений целостности. Основные задачи проектирования баз данных: ­ обеспечение хранения в БД всей...

Модели данных для реализации поиска и прав доступа...

Библиографическое описание: Кроль, Т. Я. Модели данных для реализации поиска и прав доступа к документам / Т. Я. Кроль, М. А. Харин, Н. В

Для реализации приведенных вариантов используются средства базы данных электронного архива, метаданных, создаваемых СУБД...

СУБД Oracle: DDL триггер, как средство контроля изменения...

Контроль изменений в структуре базы данных (БД), с последующим сохранением этих изменений обычно используется для того, чтобы с

Код триггера ddl_trigger для определенной схемы данных. В запросе на извлечение данных об изменении таблицы используется...

Разработка программного модуля тестирования баз данных

Следующим важным параметром является масштабируемость базу данных. Для любой системы масштабируемость, то есть возможность справляться с увеличением нагрузки при добавлении ресурсов, является обязательным критерием. В случае СУБД рассматриваются...

Особенности проектирования базы данных для информационной...

6. Приведение модели базы данных ко второй нормальной форме. Отношение находится во второй нормальной форме [2, с.23], если оно удовлетворяет следующим требованиям

Теперь получена модель базы данных, которую можно реализовать средствами выбранной СУБД.

Организация базы данных в автоматизированных системах

Структура базы данных должна удовлетворять требованиям многих применений, обеспечивая быстрый доступ к каждому элементу информации. Для этого в базе данных должны быть отражены естественные логические связи между данными, на основании которых при решении...

Комбинация средств UML И CSP-OZ для разработки приложений...

Схема группирует все определения базы данных, включая все схемы отношений в части декларации, а в части предикатов

Реализация базы данных для лаборатории микроскопии. База данных (далее — БД) разрабатывается для сотрудников и гостей WEB-приложения.

Похожие статьи

Особенности применения баз данных и систем управления...

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

Разработка базы данных для отдела кадров в программе...

Для создания базы данных «Кадры» автором были определены и описаны основные сущности и атрибуты, заданы первичные и альтернативные ключи, построены связи между ними, описаны логическая и физическая модели базы данных, её генерация, создание и регистрация базы...

Принципы разработки и создания структуры базы данных

– иерархическая модель базы данных — использует

Проектирование баз данных — процесс создания схемы базы данных и определения необходимых ограничений целостности. Основные задачи проектирования баз данных: ­ обеспечение хранения в БД всей...

Модели данных для реализации поиска и прав доступа...

Библиографическое описание: Кроль, Т. Я. Модели данных для реализации поиска и прав доступа к документам / Т. Я. Кроль, М. А. Харин, Н. В

Для реализации приведенных вариантов используются средства базы данных электронного архива, метаданных, создаваемых СУБД...

СУБД Oracle: DDL триггер, как средство контроля изменения...

Контроль изменений в структуре базы данных (БД), с последующим сохранением этих изменений обычно используется для того, чтобы с

Код триггера ddl_trigger для определенной схемы данных. В запросе на извлечение данных об изменении таблицы используется...

Разработка программного модуля тестирования баз данных

Следующим важным параметром является масштабируемость базу данных. Для любой системы масштабируемость, то есть возможность справляться с увеличением нагрузки при добавлении ресурсов, является обязательным критерием. В случае СУБД рассматриваются...

Особенности проектирования базы данных для информационной...

6. Приведение модели базы данных ко второй нормальной форме. Отношение находится во второй нормальной форме [2, с.23], если оно удовлетворяет следующим требованиям

Теперь получена модель базы данных, которую можно реализовать средствами выбранной СУБД.

Организация базы данных в автоматизированных системах

Структура базы данных должна удовлетворять требованиям многих применений, обеспечивая быстрый доступ к каждому элементу информации. Для этого в базе данных должны быть отражены естественные логические связи между данными, на основании которых при решении...

Комбинация средств UML И CSP-OZ для разработки приложений...

Схема группирует все определения базы данных, включая все схемы отношений в части декларации, а в части предикатов

Реализация базы данных для лаборатории микроскопии. База данных (далее — БД) разрабатывается для сотрудников и гостей WEB-приложения.

Задать вопрос