2012-08-16 135 views
0

是否可以在核心数据中观察某些项目(例如用户)的计数?核心数据KVO计数

我可以做这样的事情。

[[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

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

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

随着NSFetchedResultsController设置它的委托,然后你会收到controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:电话。


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