Kaydetmek 2 veya 3 dakika alırsa, aynı türden çok nesneye sahipseniz, Çekirdek Veriler işleri kurtarmak için uzun zaman alacak. Ne yaptığının önemi yok, biraz zaman alacak. Yapabilecekleriniz, kullanıcı arabiriminizi donduramayacak şekilde arka plan iş parçasındaki yerleri almaya kaydetmek için yapılandırmaktır.
En kolay yol, ana içeriğiniz için bir arka plan bağlamı oluşturmaktır. Buradaki fikir, ana içeriğinizin verilerini ana içeriğe kaydetmesi ve ana içeriğin diske veriyi devam ettirmekten sorumlu olmasıdır. Temelde böyle: ebeveyn hızlı üzere

ana bağlam ve ebeveyn bağlam hem bellekte çalışması nedeniyle, çocuktan işlemi kaydedin. Ebeveyn konum nesnelerinize sahip olduğunda, arka plan iş parçacığına kaydedilir. Hala uzun bir zaman alabilir, ancak en azından kullanıcı arayüzünüzü dondurmamalıdır.
Ve böyle kodunuzda bu yapılandırabilirsiniz:
lazy var parentContext: NSManagedObjectContext = {
let moc = NSManagedObjectContext(concurrencyType:.PrivateQueueConcurrencyType)
moc.persistentStoreCoordinator = self.coordinator
return moc
}()
lazy var context: NSManagedObjectContext = {
let moc = NSManagedObjectContext(concurrencyType:.MainQueueConcurrencyType)
// moc.persistentStoreCoordinator = self.coordinator
moc.parentContext = self.parentContext
return moc
}()
context
çocuk bağlam olacaktır. Bir ebeveyn içeriği vermenin ne kadar kolay olduğunu görebilirsiniz.
class func save(moc:NSManagedObjectContext) {
moc.performBlockAndWait {
if moc.hasChanges {
do {
try moc.save()
} catch {
print("ERROR saving context \(moc.description) - \(error)")
}
}
if let parentContext = moc.parentContext {
save(parentContext)
}
}
}
(hafifçe alınmış ve Kod düzenlenebilir "Swift ile iOS için Öğrenme Çekirdek Data: A Guide Hands-on" Tim Roadley tarafından kitap) Ardından
, verilerinizi kaydedin.
iOS simülatörü veya iPhone üzerinde çalışmak? Belleği temizlemek için bazı uygulamaları bırakmayı deneyin – brimstone
Arka plan kaydetme için bir üst bağlam kullanın. –
Ayrıca, uygulamaları bırakmak, işleri hızlandırmak için neredeyse hiçbir şey yapmaz. –