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


Запись хранимых данных в SQLite



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

Запись хранимых данных в SQLite
Первое и очень важное, что следует сказать о записи данных в Core Data, – 
запись
нежелательно
выполнять в основном потоке выполнения. На самом 
деле в контейнере хранилища есть удобный метод, позволяющий легко и быст-
ро делегировать запись данных фоновому потоку, как показано здесь:
persistentContainer.performBackgroundTask { (managedObjectContext) in
// Некоторые операции...
}
Операциями в данном случае могут быть операции чтения или записи. Сей
-
час мы сосредоточимся на записи. Вернемся к нашему управляемому объекту 
Person
и посмотрим, как создать новый экземпляр и записать его в хранилище.
При создании и изменении объектов, управляемых инфраструктурой Core 
Data, все операции сначала выполняются в контексте управляемого объекта. 
Мы можем изменять объекты в этом контексте как угодно и сколько угодно, 
и эти изменения никак не будут отражаться на базе данных, пока мы явно не 
сохраним изменения. То есть, чтобы создать новый экземпляр управляемого 
объекта, мы должны создать контекст. Вот как можно создать новый экземпляр 


iOS 

137
Person
и присвоить ему некоторые свойства:
persistentContainer.performBackgroundTask { (managedObjectContext) in
let person = Person(context: managedObjectContext)
person.firstName = "Mike"
person.lastName = "Dunn"
}
Здесь все просто. Мы создали новый экземпляр 
Person
с именем 
person
в кон
-
тексте управляемого объекта, переданном в наше замыкание, а затем присвои-
ли значения свойствам 
firstName
и 
lastName
.
Однако этот объект еще не был сохранен в базе данных. Фактически он будет 
существовать только до завершения замыкания, а затем уничтожится вмес-
те с контекстом управляемого объекта. К счастью, сохранить данные тоже не 
сложно. Достаточно добавить одну строку в блок 
do
и 
try
и проверить ошибку, 
например:
persistentContainer.performBackgroundTask { (managedObjectContext) in
let person = Person(context: managedObjectContext)
person.firstName = "Mike"
person.lastName = "Dunn"
// Сохранить контекст
do {
try managedObjectContext.save()
} catch {
print("Error during save. \(error)")
}
}
Заметили, что мы сохранили 
контекст
, а не сам объект? Эта операция со
-
храняет все изменения, выполненные внутри контекста. То есть если бы мы 
создали миллион экземпляров 
Person
, все они были бы сохранены одновре
-
менно. Если бы мы создали экземпляры объектов разных типов и изменяли 
свойства в некоторых других, все эти изменения и новые экземпляры также 
сохранились бы одновременно. Сохраняется контекст целиком, а не отдельные 
объекты. Это может привести к проблемам производительности. Поэтому для 
предотвращения подобных ситуаций рекомендуется проводить профилирова
-
ние и тестирование с большими наборами данных.
Чтобы изменить объект, его нужно извлечь из Core Data в контексте управ
-
ляемого объекта, изменить требуемые свойства и затем сохранить контекст. 
Давайте посмотрим, как извлечь хранимые данные из SQLite.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   88   89   90   91   92   93   94   95   ...   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