我使用NSManagedObject类的isUpdated实例方法跟踪我的'对象'。
当我修改现有对象时,它可以正常工作。
如果我使用例如:
创建一个新对象[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:managedObjectContext]
我不能使用isUpdated,我必须使用isInserted。
这是有效的,但我想检查一下,如果使用 new 数据修改了对象。
无论对象是否已被更改,isInserted都将返回FALSE,只关注是否已插入...
我可以使用什么?我可以跟踪对象属性的初始状态,但我更喜欢isUpdated方法。
感谢!!!
河
答案 0 :(得分:15)
我不确定我完全理解你的问题,但是,如果你想检查你是否使用未保存的 new NSManagedObject,你可以通过为NSManagedObject编写一个小类来做到这一点: / p>
@interface NSManagedObject(Utility)
/**
Returns YES if this managed object is new and has not yet been saved in the persistent store.
*/
- (BOOL)isNew;
@end
@implementation NSManagedObject(Utility)
- (BOOL)isNew {
NSDictionary *vals = [self committedValuesForKeys:nil];
return [vals count] == 0;
}
@end
如果您使用以下方法创建了新的托管对象:
[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:managedObjectContext]
您可以使用-isNew
方法检查是否已保存。
答案 1 :(得分:1)
isInserted指示对象是否为“new”(新插入NSManagedObjectContext)。我认为你需要的是方法hasChanges(它在NSManagedObject上,也在NSManagedObjectContext上)......
BOOL someChangeHappendToObject = [myObject hasChanges];