在我的应用程序中,我使用了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