【发布时间】:2011-09-03 11:21:15
【问题描述】:
我有一个在appDelegate 中创建的主NSManagedObjectContext。
现在,我正在使用另一个 NSManagedObjectContext 来编辑/添加新对象,而不影响主要的 NSManagedObjectContext,直到我保存它们。
当我保存第二个NSManagedObjectContext 时,更改不会反映在主NSManagedObjectContext 中,但是如果我从模拟器打开.sqlite 数据库,则更改已正确保存到.sqlite 数据库中。不管我是否再次获取数据,或者即使我创建第三个NSManagedObjectContext,我也看不到第二个NSManagedObjectContext 的这些更改,尽管事实上这些更改确实存在于磁盘上。
如果我退出并重新打开应用程序,所有更改都在那里。
什么会导致主 NSManagedObjectContext 看不到持久存储中存在的新更改?
在此方法之前,我使用单个 NSManagedObjectContext 和 undoManager,但我想将其更改为使用两个不同的 NSManagedObjectContexts。
第二次NSManagedObjectContext保存:
NSError* error = nil;
if ([managedObjectContext hasChanges]) {
NSLog(@"This new object has changes");
}
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
else {
NSLog(@" %@", [error userInfo]);
}
}
【问题讨论】:
标签: objective-c cocoa core-data nsmanagedobjectcontext