核心数据KVO计数

时间:2012-08-16 13:58:44

标签: objective-c ios core-data key-value-observing

可以在核心数据中观察某些项目的计数,比如用户吗?

我可以做这样的事情。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleDataModelChange:) name:NSManagedObjectContextObjectsDidChangeNotification object:myManagedObjectContext];

NSSet *insertedObjects = [[note userInfo] objectForKey:NSInsertedObjectsKey];
localCount += [insertedObjects count];

NSSet *deletedObjects = [[note userInfo] objectForKey:NSDeletedObjectsKey];
localCount -= [insertedObjects count];

但这似乎容易出错,而且必须是更直接的解决方案。

1 个答案:

答案 0 :(得分:1)

是的,你可以。使用NSFetchedResultsController会更容易。 在正常情况下(我的意思是没有NSFetchedResultsController)你做了以下

NSManagedObject *foo; //Some NSManagedObject
[foo addObserver: self forKeyPath:@"A" options: NSKeyValueObservingOptionOld |     NSKeyValueObservingOptionNew context:context];

使用NSFetchedResultsController设置它的委托,然后您将收到controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:个电话。


编辑: 在你的情况下,你的方法是正确的。错误必须来自其他地方