1

当我像这样添加一个新NSManagedObject实例时NSManagedObjectContext

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

我得到1 NSManagedObjectContextObjectsDidChangeNotificationNSInsertedObjectsKey作为新值的“名称”值“新对象”。

我希望得到:

  • 1 个InsertedObjectKey新值为“name”的通知 = nil
  • 1 个UpdatedObjectKey通知,新值为“名称”=“新对象”

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

4

2 回答 2

4

托管对象上下文将它们的更改组合在一起。您不会收到每个值更改的通知,而是会在每个“块”更改结束时定期收到通知。

如果您特别希望单独通知每个更改,在上面的代码中,您可以在两者之间调用 -processPendingChanges

于 2012-06-02T07:35:17.107 回答
3

NSManagedObjectContext 类参考中,它在下面说insertedObjects

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

于 2012-06-01T23:26:31.640 回答