-1

我将此代码放入核心数据模型中,以将值更新到其中:

if (!([photo.photoDescription isEqualToString:[photoDictionary[PHOTO_DESCRIPTION] description]])) {
        photo.photoDescription = [photoDictionary[PHOTO_DESCRIPTION] description];
        photo.isOnMap = [NSNumber numberWithBool:NO];
        [context save:&error];
    }

在我的控制器中,我添加了一个观察者来查看核心数据的变化:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificaRicevut) name:NSManagedObjectContextDidSaveNotification object:self.context];

当我执行[context save:&error];代码时,通知已正确发送,但是当我在通知方法中发出请求以检索新值时,我得到的是旧值而不是新值。如果我重新启动应用程序,新值将正确显示。问题出在哪里?谢谢

4

2 回答 2

1

您可以使用PonyDebugger在运行时检查数据库。此类问题通常是由于以下原因之一:

  • [managedObjectContext save:&error]没有正确调用
  • 创建失败NSManagedObjectNSManagedObjectContext正确
于 2013-11-05T00:13:39.347 回答
1

我通过将此代码放入通知方法中来解决:

    - (void)contextDidSave:(NSNotification *)notification
{
    dispatch_async(dispatch_get_main_queue(), ^{
        SEL selector = @selector(mergeChangesFromContextDidSaveNotification:);
        [self.context performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];
        [self updateMapWithPictureInCoreData];
    });
}

希望能有所帮助

于 2013-11-06T15:35:09.263 回答