Нативная разработка мобильных приложений


Настройка стека Core Data



Download 3,69 Mb.
Pdf ko'rish
bet90/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   86   87   88   89   90   91   92   93   ...   228
Bog'liq
Нативная разработка мобильных приложений

Настройка стека Core Data
Начать работу с Core Data в новом или существующем проекте совсем неслож
-
но, но прежде вам нужно понять, что такое Core Data. Начнем со слоя хранения. 
Предположим, что мы будем использовать стек Core Data в связке с базой дан
-
ных SQLite. Это, пожалуй, самый распространенный вариант использования 
Core Data.
Над базой данных SQLite и слоем хранения находится объект 
NSPersistent­
StoreCoordinator
. Этот объект поддерживает связь между базой данных, мо-
делью управляемых объектов и контекстом управляемых объектов. Он исполь
-
зует модель управляемых объектов, определяющую связи между объектами 
данных, и преобразует эти объекты и отношения между ними в таблицы базы 
данных и запросы SQL. Он также оптимизирует количество доставляемых объ
-
ектов и является настоящим «мозгом» Core Data. Его можно считать координа
-
тором трафика между SQLite и остальной частью приложения.
Модель управляемых объектов, или 
NS
ManagedObjectModel
, определяется для 
каждого проекта в файле 
.xcdatamodeld
и используется координатором храни
-
лища для определения структуры данных. В этот файл разработчики добавляют 
новые объекты, отношения и свойства – именно так создается и определяется 
модель данных в проекте. Объекты, создаваемые на основе модели, называ
-


134

Хранение данных
ются «управляемыми объектами» и наследуют класс 
NSManagedObjec
t
, который 
является частью инфраструктуры Core Data. Большая часть работы с Core Data 
выполняется на этом уровне вместе со следующим классом, который мы обсу
-
дим: контекстом управляемого объекта.
Контекст управляемого объекта, или 
NSManagedObjectCon
text
, можно рассмат-
ривать как своеобразный черновик, в котором можно изменять данные в эк
-
земплярах объектов модели до их сохранения в базе данных. Контекст управ
-
ляемого объекта – это объект, который используется для описания контекста, 
помогающего инфраструктуре Core Data понять, как должен создаваться и из
-
меняться ваш объект. Обычно в приложениях, использующих Core Data, есть 
два типа контекстов: контекст представления (действующий в основном по
-
токе выполнения) и фоновый, или закрытый, контекст, который используется 
для сохранения объектов и фактически преобразует экземпляры 
NSManagedOb­
ject
в записи в базе данных с помощью команд 
INSERT
и 
UPDATE
.
Прежде чем сохранять данные и/или извлекать их из хранилища, необходи
-
мо настроить стек Core Data. Обычно настройка выполняется в момент запуска 
приложения. Часто большинство настроек выполняются в методе 
application(_
:didFinishLaunchingWithOptions:)
делегата приложения.
Раньше процесс настройки был довольно громоздким, но теперь в Core Data 
есть удобный класс 
NSPersistentContainer
, инициализирующий стек Core Data. 
Этот класс выполняет все необходимые настройки, описанные в файле с опре
-
делением модели управляемых объектов, и имеет удобный метод для асин
-
хронной загрузки хранилища. Вот как он используется:
let persistentContainer = NSPersistentContainer(name: "MyModel")
persistentContainer.loadPersistentStores { (description, error) in
// Обработчик завершения загрузки
}
Этот код создает контейнер для целевой модели управляемых объектов 
с именем 
"MyModel"
и сохраняет ссылку на него в переменной 
persistentCon­
tainer
. Следующая строка загружает хранилище, в данном случае базу данных 
SQLite, с диска и по окончании вызывает обработчик завершения для провер
-
ки ошибок и выполнения любого необходимого кода. Если добавить этот код 
в код запуска в делегате приложения, приложение найдет файл модели управ
-
ляемых объектов 
MyModel.xcdatamodeld
в пакете приложения и использует его 
для создания или загрузки файла базы данных SQLite с именем 
MyModel.sqlite
из каталога 
Application Support
.
При желании есть возможность настроить местоположение файлов базы данных. 
Исторически для хранения баз данных SQLite использовался каталог 
Documents

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


iOS 

135
let persistentContainer = NSPersistentContainer(name: "MyModel")
persistentContainer.loadPersistentStores { (description, error) in
guard let error = error else {
// Сообщить об ошибке пользователю и/или попытаться исправить ее
return
}
// Обновить пользовательский интерфейс 
// и/или начать использовать Core Data
}
Теперь, когда стек Core Data запущен и работает, посмотрим, как определять 
объекты.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   86   87   88   89   90   91   92   93   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish