插入后的NSManagedObjectContextObjectsDidChangeNotification

时间:2012-06-01 21:40:45

标签: cocoa core-data nsnotificationcenter

当我向NSManagedObject添加新的NSManagedObjectContext实例时,这样:

NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"Bla" inManagedObjectContext:self.managedObjectContext];
[newObject setValue:@"New Object" forKey:@"name"];

我得到 1 NSManagedObjectContextObjectsDidChangeNotification NSInsertedObjectsKey,新值为“名称”值“新对象”。

我希望得到:

  • 1 InsertedObjectKey通知,其新值为“name”= nil
  • 1 UpdatedObjectKey通知,其新值为“name”=“New Object”

我觉得这是一个功能,但我必须确定..

2 个答案:

答案 0 :(得分:4)

托管对象上下文将其更改捆绑在一起。您不会收到有关每个值更改的通知,而是会在每次“更改”更改结束时定期收到通知。

如果您特别希望单独通知每个更改,请在上面的代码中调用-processPendingChanges

答案 1 :(得分:3)

insertedObjects

下的NSManagedObjectContext Class Reference
  

当insertedObjects的返回值发生更改时,托管对象上下文不会发布键值观察通知 - 但是,在进行更改时发布NSManagedObjectContextObjectsDidChangeNotification通知,并且在更改之前和之后发布NSManagedObjectContextWillSaveNotification和NSManagedObjectContextDidSaveNotification通知分别承诺。