我在我的应用中使用MagicalRecord
。我有一个NSManagedObject
子类,它有一个名为isFavorite
的属性BOOL (NSNumber)
。
当我设置该属性时,NSManagedObject
子类hasChanges
方法返回TRUE
,但如果我访问NSManagedObject
的上下文,hasChanges
方法它有时会返回FALSE
。
这是我正在使用的代码:
self.controlledDevice = [WUDevice MR_findFirstWithPredicate:[NSPredicate predicateWithFormat:@"deviceIdInHub = %@", deviceId]];
self.controlledDevice.isFavorite = @(![self.controlledDevice.isFavorite boolValue]);
//At this point, [self.controlledDevice hasChanges] always returns true, but [self.controlledDevice.managedObjectContext hasChanges] sometimes returns false, sometimes true.
有没有人知道为什么会发生这种情况?
修改
运行“有时”行为。意思是,如果某些NSManagedObject没有提升对上下文的更改,并且我重新启动应用程序,它可以按预期开始工作。
我认为问题是因为NSManagedObjectContext未被通知其中一个NSManagedObjects的更改,因为在同一个运行中我再次请求相同的对象,我收到它的更改,但它没有将这些更改保存到持久性存储中。