Mulit iş parçacıklı bir ortamda CoreData ile sorun yaşıyorum.CoreData Çok iş parçacıklı
Bir RestKit kurulumuna sahibim, yani bir alt bağlam oluşturduğum bir persistentManagedObjectContext (private) var (self.autoSyncMOC, ayrıca özel). PersistentMOC'nin (autoSyncMOC'imin kardeşi) bir çocuğu olan RestKit (ana iş parçacığı) mainManagedObjectContext öğesine dokunmuyorum. Burada yanlış gidebilir ne
self.autoSyncMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
self.autoSyncMOC = [RKObjectManager sharedManager].managedObjectStore.persistentStoreManagedObjectContext;
[self.autoSyncMOC performBlockAndWait:^{
//do normal fetch
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:...];
fetchRequest.predicate =[NSPredicate...
NSArray *result = [self.autoSyncMOC executeFetchRequest:fetchRequest error:nil];
//do stuff with fetched objects (i.e. set a property)
for (DownloadableItem *item in result) {
item.checksumDownload = @"test";
}
//save context
[self.autoSyncMOC save:...];
}];
:
@property (nonatomic, strong) NSManagedObjectContext *autoSyncMOC;
Bu Multithreading_Violation_AllThatIsLeftToUsIsHonor istisna atar Kod nedir? Sanırım hala kavramları anlamadım.
Uygun bir yanıt vermek için birinin daha fazla kod ve bağlam gerektirdiğini biliyorum. Sadece kodumun geçerli olup olmadığını bilmek istiyorum.
Teşekkürler!
Sadece kafamı karıştıran başka bir test yaptım: İçeriğimi bir özellikte kaydettiğimde, kod istisnayı atar. Eğer metotum içinde yaratırsam, her şey beklendiği gibi çalışır. Birisi bunu açıklayabilir mi? – pawi
Ne demek onu bir mülke sakladığın? Statik bir mülkte depolamak yerine onu yeniden mı yaratıyorsunuz? –
Tek bir sınıfta sadece bir kez oluşturulmuş bir statik özelliğe kaydediyorum. – pawi