如何使用单例对象观察 CoreData 的变化?
在我的应用程序中,每当用户添加一个新的 CoreData FoodEntry 时,我想通知我的 Singleton 它将总结当天的卡路里总量,然后我的 ViewController 将被通知当天的卡路里总量已经改变并且它可以更新 UI . 所以 Singleton 正在观察 CoreData 上下文,而 viewController 正在观察 Singleton number cruncher 类。
到目前为止,我的计划是实现单例并让它订阅,NSManagedObjectContextObjectsDidChangeNotification
然后在回调方法中处理数字handleDataModelChange
......我遇到两个错误
CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是NSManagedObjectContextObjectsDidChangeNotification
.
+[FitWrench handleDataModelChange:]:
无法识别的选择器发送到类 0x27a58
我设置了一个异常断点,当我保存 managedObjectContext 但我无法让它打印出 userInfo...=(
@implementation Singleton
+ (Singleton *) sharedInstance
{
static Singleton *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[Singleton alloc] init];
// Do any other initialisation stuff here
AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *myManagedObjectContext = appDelegate.managedObjectContext;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleDataModelChange:)
name:NSManagedObjectContextObjectsDidChangeNotification
object:myManagedObjectContext];
});
return sharedInstance;
}
- (void)handleDataModelChange:(NSNotification *)note;
{
NSSet *updatedObjects = [[note userInfo] objectForKey:NSUpdatedObjectsKey];
NSSet *deletedObjects = [[note userInfo] objectForKey:NSDeletedObjectsKey];
NSSet *insertedObjects = [[note userInfo] objectForKey:NSInsertedObjectsKey];
// Do something in response to this
NSLog(@"%@ Objects Updated, %@ Objects Deleted, %@ Objects Inserted",[updatedObjects count],[deletedObjects count],[insertedObjects count]);
}
@end