我有两个持久存储(它们都是sqlite存储),因此有两个持久性存储协调器,每个协调器都使用自己的 managedObjectContext 。现在,我有一个情况。我的一个观点是观察 NSManagedObjectContextDidSaveNotification 的通知。它接收通知很好,但我如何比较触发通知的上下文。
我做了以下操作,看看它是否是两个上下文中的一个;
-(void)contextSaved:(NSNotification*)notification{
NSManagedObjectContext *context = notification.object;
if(context == myFirstContext){
NSLog(@"This is the first context");
}else{
NSLog(@"This is the second context");
}
}
这两个条件都失败了,我没有得到任何类型的日志,但是如果我记录对象的地址,它似乎很好;
NSLog(@"Notification object pointer %p, first context pointer %@", context, myFirstContext);
如何将这两个上下文与通知中的上下文进行比较,并检测保存上下文并采取相应措施。请建议。我很乐意为您提供任何帮助。
答案 0 :(得分:0)
这正是您要检查哪些托管对象上下文发布通知的方式。通知对象是MOC,因为您想知道它是否与其他已知对象完全相同,==
是比较它们的正确方法。如果NSLog
都没有产生任何输出,那么几乎肯定不会调用此方法。也许您还没有注册NSManagedObjectContextDidSaveNotification
,或者您注册但object
参数的值不正确。尝试在此方法的第一行设置断点,以查看是否调用它。如果没有,请查看您注册通知的位置,并找出您没有获得通知的原因。