MagicalRecord 2.0.3 kullanıyorum ve verileri arka planda nasıl kaydedeceğimi gerçekten anlayamıyorum.Arka planda birden çok nesne nasıl oluşturulur?
belgelerine göre, böyle bir şey çalışması gerekir:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
// Do this hundreds of times
[MyObject createInContext:localContext];
}];
Ancak, hiçbir şey veritabanına kaydedilir. Ben birden fazla kişi buna benzer çözümler gönderme gördüm:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
// Do this hundreds of times
[MyObject createInContext:localContext];
} completion:^{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[[NSManagedObjectContext defaultContext] saveNestedContexts];
}];
}];
Bu benim veri kümesi ile (save ana iş parçacığı üzerinde olur çünkü ancak başvurum bir süre tepkisiz, veritabanında benim verileri kaydetmek yapar çok uzun olan yaklaşık 3 saniye.
Ben de bu denedim, ama aynı zamanda blok sonra kaydedilirken:
self.queue = [[NSOperationQueue alloc] init];
[self.queue addOperationWithBlock:^{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
// Do this hundreds of times
[MyObject createInContext:localContext];
[localContext saveNestedContexts];
}];
Ve son olarak, bu kod ile aynı blokaj etkisi:
dispatch_queue_t syncQueue = dispatch_queue_create("Sync queue", NULL);
dispatch_async(syncQueue, ^{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
// Do this hundreds of times
[MyObject createInContext:localContext];
[[NSManagedObjectContext contextForCurrentThread] saveNestedContexts];
});
Yani, en iyi yolu nedir Bunu çözmek için? Arka planda yüzlerce nesne oluşturmam gerekiyor ve uygulamanın yanıt vermeye devam etmesi gerekiyor.
işe yarayabilir yeni iç içe bağlamları MagicalRecord içinde tasarruf API'ler çok büyük hasara yol için başladık nasıl bir örnek bulabilirsiniz. Bu sorunların farkında olmasına rağmen ve bazı düzeltmeler şimdi tartışılıyor, ben her zaman önerilere açıkım. – casademora
Belki de Core Data'yı MR gibi bir çerçeve olmadan kullanmanın en iyisi sizsiniz? – Hunter
MagicalRecord'u kullanarak bir çözüm buldunuz mu? Aynı sorunları yaşıyorum (arka planda güncelleme yaparken UI kilitleniyor) ve bir çözüm bulamıyorum. Teşekkürler! – RyanG