Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 缺少核心数据通知_Iphone_Cocoa Touch_Core Data - Fatal编程技术网

Iphone 缺少核心数据通知

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

我正在iPhone SDK 3.1.3上尝试一个多线程核心数据实现。每个线程有两个不同的NSManagedObjectContext对象,我正在一个线程上注册更改通知,如下所示:

- (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
。这些是常数。事件很可能已发布,但您没有听到正确的名称