在我的應用程序中,我使用了NSManagedContext的雙重模型。 有一個孩子managedObjectContext
與NSMainQueueConcurrencyType
和父母 writerManagedObjectContext
與NSPrivateQueueConcurrencyType
保存數據到PersistentStoreCoordinator
。我能夠將數據保存在數據庫中,但在檢索時,我正在獲取舊值而不是新值。NSManagedContext返回舊數據,而不是新的
下面的代碼是將上下文保存到parent context
,然後保存到PersistentStoreCoordinator
。
[managedObjectContext performBlock:^{
//push to parent
//NSLog(@"pushing to parent context (writer context)");
NSError * error;
if([managedObjectContext hasChanges] && ![managedObjectContext save:&error]){
NSLog(@"main Save Error: %@", [error localizedDescription]);
}
//NSLog(@"pushing to persistentstore");
[self.writerManagedObjectContext performBlock:^{
//push to parent
NSError * error;
if([self.writerManagedObjectContext hasChanges] && ![self.writerManagedObjectContext save:&error]){
NSLog(@"writer Save Error: %@", [error localizedDescription]);
}
}];
}];
在堆棧溢出時發現了相同的issue,但其答案對我的問題沒有幫助。任何人都知道如何做到這一點?
如果在任何SQLite瀏覽器中使用最新值更新了數據庫,你是否檢查過你的數據庫文件? – Ellen