我有一个DataManager类,它返回一个共享实例:
+ (DataManager *)sharedInstance;
{
static DataManager *sharedInstance = nil;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
sharedInstance = [[DataManager alloc] init];
});
return sharedInstance;
}
这里我跟踪我的managedObjectContext,managedObjectModel,persistentStoreCoordinator。
我还有一种方法,可以提取要显示的项目:
- (NSArray *)getItems
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
return [[self managedObjectContext] executeFetchRequest:fetchRequest error:nil];
}
现在,我的主应用程序中有一个视图控制器,我调用了这个 getItems 方法,然后逐个修改项目。例如:set item.itemName = @"testName"; 然后调用我的 save 方法。
我还有一个 iOS 8,其中在我的 TodayViewController 中也调用了 getItems 方法。我有一个 NSNotification,检测 managedObjectContext 是否已保存。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refetchItems) name:NSManagedObjectContextDidSaveNotification object:[[DataManager sharedInstance] managedObjectContext]];
这些重新获取的项目确实被调用,但返回的是过时的NSManagedObjects。因此,例如itemName没有更改为“testName”。
我做错了什么?如果您需要查看其他代码,请告诉我。
谢谢!
DidChange
通知吗? - Léo Natan