Ios 跟踪NSManagedObject的属性更改
我正在寻找一种跟踪NSManagedObject属性更改的方法 目前,我使用NSNotifactionCenter查看managedobjectcontext的更改:Ios 跟踪NSManagedObject的属性更改,ios,core-data,nsmanagedobject,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我正在寻找一种跟踪NSManagedObject属性更改的方法 目前,我使用NSNotifactionCenter查看managedobjectcontext的更改: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleDataModelChange:) name:NSManagedObjectContextObjectsDidChangeNotification object:self.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleDataModelChange:) name:NSManagedObjectContextObjectsDidChangeNotification object:self.managedObjectContext];
它触发handleDataModelChange方法,如下所示:
- (void)handleDataModelChange:(NSNotification *)note
{
NSSet *updatedObjects = [[note userInfo] objectForKey:NSUpdatedObjectsKey];
if (updatedObjects.count > 0) {
for (NSManagedObject *obj in updatedObjects.allObjects) {
NSLog(@"Object updated: %@ with values:",obj.entity.name);
NSDictionary *theAttributes = [self getAllAttributesOf:obj];
for (NSString *attributeName in theAttributes) {
NSLog(@"Name: %@ : %@",attributeName,[obj valueForKey:attributeName]);
}
}
}
}
这将记录对象的新属性(如果对象发生更改)。如何获得旧属性值的方法?来自:
更改值
返回一个字典,其中包含自上次获取或保存接收器以来已更改的持久属性的键和(新)值
更改循环事件的值
返回一个字典,其中包含自上次发布
nsManagedObjectContextObjectsIDChangeNotification
以来已更改的持久性属性的键和旧值。您可以尝试从存储中提取旧值吗?@Mundi您是否建议执行单独的提取请求?当然可以。否则您将如何获取它?changedValues返回一个带有一个键的字典,其中包含关系的新值,但changedValuesForCurrentEvent返回一个空集。有什么想法吗?