Iphone 缺少核心数据通知
我正在iPhone SDK 3.1.3上尝试一个多线程核心数据实现。每个线程有两个不同的NSManagedObjectContext对象,我正在一个线程上注册更改通知,如下所示:Iphone 缺少核心数据通知,iphone,cocoa-touch,core-data,Iphone,Cocoa Touch,Core Data,我正在iPhone SDK 3.1.3上尝试一个多线程核心数据实现。每个线程有两个不同的NSManagedObjectContext对象,我正在一个线程上注册更改通知,如下所示: - (void)setup { DLog(@"Registering for NSManagedObjectContext notifications"); NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc
- (void)setup {
DLog(@"Registering for NSManagedObjectContext notifications");
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(test:) name:@"NSManagedObjectContextWillSaveNotification" object:nil];
[nc addObserver:self selector:@selector(test:) name:@"NSManagedObjectContextDidSaveNotification" object:nil];
[nc addObserver:self selector:@selector(test:) name:@"NSManagedObjectContextObjectsDidChangeNotification" object:nil];
}
- (void)test:(NSNotification *)notif {
DLog(@"Test callback");
}
在另一个线程中,我保存第二个上下文,如下所示:
NSError *error = nil;
[managedObjectContext save:&error];
if (error) {
ALog(@"Error occured while trying to save a NewsStory object");
}
else {
DLog(@"Saving context");
}
通知回调方法从未执行过,这让我相信这些通知从未发布过
我的日志显示以下内容:
Registering for NSManagedObjectContext notifications
Saving context
...
Saving context
我知道有一件事会导致通知和核心数据出现问题,那就是有一个自定义的托管对象子类不能正确地遵循键值。这将首先防止创建更改通知 作为测试,我建议在同一线程中注册一个观察者,或者甚至让子类(如果您使用它们)注册来观察它们自己。如果这不起作用,那么您的问题比通知更基本。如果它确实有效,那么问题在于线程 将您的
@“NSManagedObjectContextWillSaveNotification”
切换到NSManagedObjectContextWillSaveNotification
。这些是常数。事件很可能已发布,但您没有听到正确的名称