İki örneğim var NSManagedObjectContext
: biri ana dişlide ve diğeri arka plan iş parçacığında kullanılır (NSOperation
aracılığıyla.) İş parçacığı güvenliği için, bu iki bağlam yalnızca NSPersistentStoreCoordinator
numaralı telefonu paylaşır.Paylaşılan kalıcı mağaza ile NSManagedObjectContexts arasında bekleyen değişiklikler kopyalanıyor mu?
Yapmakta olduğum sorun, ilk bağlamda (ana iş parçacığı üzerinde), -save
gerçekleştirilinceye kadar ikinci bağlamda bulunmayan bekleyen değişikliklerle ilgilidir. Paylaşılan kalıcı mağazanın, -insertedObjects
, -updatedObjects
ve -deletedObjects
tarafından izlenen NSManagedObjects
kopyaları olmayacağı için bu anlaşılabilir bir durumdur.
Maalesef bu kullanıcı deneyimi ile ilgili bir sorun sunar: kaydedilmemiş değişiklikleri (zaman alıcı) arka plan iş parçacığı oluşturulan raporlarda görünmez. Aklıma
tek çözüm pis: İlk bağlamdan, eklenen güncellenir ve silinen nesneler almak ve ikinci bir bağlamda amacı, grafik üzerine bunları aşı. Veri kümesinde bazı oldukça karmaşık ilişkiler var, bu yüzden bu yönde gitmekte tereddüt ediyorum. Birisi burada daha iyi bir çözüm olarak umuyorum.
Teşekkürler Wil! 10'u hedeflemek isterim.6, her geçen gün daha da zorlaşıyor :-) - Değişiklik bildirimini takip ediyorum, ancak değişiklikleri nasıl uyguladığınızı ve varlık ilişkilerini nasıl sürdürdüğünüzden emin değilim. Biraz daha spesifik olabilir misiniz? – chockenberry
Ah evet. Görünüşe göre benim modelime dayanan bir varsayım yapıyorum, ki bu da her nesnenin kendinize ait bir UUID (string) anahtarına sahip olmasıdır. –
Arka planda MOC kaydedilmeden, ekler ana MOC'ye (yuvalanmış MOC'ler olmadan) görünmeyecektir. Değişiklik bildirimini (processPendingChanges öğesinden sonra verilir) dinler ve nesneleri kendiniz güncelleştirirseniz, var olan nesneler için güncelleştirmeler/silmeler çalışmalıdır. – diederikh