【问题标题】:managedObjectContext seems to delete my NSUserDefaultmanagedObjectContext 似乎删除了我的 NSUserDefault
【发布时间】:2011-05-10 08:07:36
【问题描述】:

保存 managedObjectContext 似乎吃掉了 NSUserDefault

NSString *defaultSiteUrl = [[NSUserDefaults standardUserDefaults] objectForKey:kSelectedSiteUrlKey];
NSLog(@"the default site url is: %@", defaultSiteUrl);

if (![[managedObjectContext] save:&error]) {
    NSLog(@"Error saving entity: %@", [error localizedDescription]);
}

NSString *defaultSiteUrl2 = [[NSUserDefaults standardUserDefaults] objectForKey:kSelectedSiteUrlKey];
NSLog(@" the default site url is: %@", defaultSiteUrl2);

控制台中的结果:

2011-05-10 15:26:40.710 Moodle[44566:207] the default site url is: http://jerome.moodle.local/~jerome/Moodle_iPhone
2011-05-10 15:26:40.717 Moodle[44566:207] the default site url is: (null)

什么可能导致这个问题? NSUserDefaults 与 ManagedObjectContext 有什么关系?

注意:

  • 为了让您了解我的应用程序:我正在开发一个 Moodle 应用程序。这段代码位于显示课程列表的屏幕上。当我在“站点设置”屏幕上设置用户默认值时,我使用 [[NSUserDefaults standardUserDefaults] 同步]。所以我猜它保存得很好

  • 如果我在设置用户默认值后直接进入课程列表屏幕之前重新启动模拟器,则这段代码可以正常工作(“保存 manageObjectContext”不会删除用户默认值)。

    李>

【问题讨论】:

  • 您使用什么代码在用户默认值中设置该键?您确定没有覆盖设置并在后台同步默认设置的线程调用吗?
  • [[NSUserDefaults standardUserDefaults] setObject:[settingsSiteViewController.site valueForKey:@"url"] forKey:kSelectedSiteUrlKey]; [[NSUserDefaults standardUserDefaults] synchronize]; 这很简单。更改此用户默认值的地方只有两个。我继续看,但我还没有得到它。

标签: iphone objective-c ios nsuserdefaults nsmanagedobjectcontext


【解决方案1】:

您必须通过 [NSUserDefaults registerDefaults:appDefaults] 初始化 NSUserDefaults 值,使用 instiliaztioan 的同步方法可能会破坏您的用户默认值,注意,与核心数据无关

【讨论】:

  • 感谢东升,registerDefaults 似乎确实解决了这个问题。我仍然想知道“保存 manageObjectContext”背后发生了什么:)
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多