比较managedObjectContexts

时间:2013-01-03 16:42:14

标签: objective-c ios core-data nsmanagedobjectcontext

我有两个持久存储(它们都是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);

如何将这两个上下文与通知中的上下文进行比较,并检测保存上下文并采取相应措施。请建议。我很乐意为您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

这正是您要检查哪些托管对象上下文发布通知的方式。通知对象是MOC,因为您想知道它是否与其他已知对象完全相同,==是比较它们的正确方法。如果NSLog都没有产生任何输出,那么几乎肯定不会调用此方法。也许您还没有注册NSManagedObjectContextDidSaveNotification,或者您注册但object参数的值不正确。尝试在此方法的第一行设置断点,以查看是否调用它。如果没有,请查看您注册通知的位置,并找出您没有获得通知的原因。

相关问题