【发布时间】: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