保存managedObjectContext似乎吃NSUserDefaultmanagedObjectContext似乎删除我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的应用程序。这段代码在显示课程列表的屏幕上。当我在“站点设置”屏幕上设置userdefault时,我使用[[NSUserDefaults standardUserDefaults]同步]。所以我猜这是很好的保存
如果在设置用户默认设置后直接进入课程列表屏幕之前重新启动模拟器,那么代码工作(用户默认不会被“save manageObjectContext”删除)。
你用什么代码来设置用户默认的密钥?你确定你没有线程调用覆盖设置并同步后台的默认值吗? – marzapower 2011-05-10 09:42:00
'[[NSUserDefaults standardUserDefaults] setObject:[settingsSiteViewController.site valueForKey:@“url”] forKey:kSelectedSiteUrlKey]; [[NSUserDefaults standardUserDefaults] synchronize];'这非常简单。只有两个地方改变这个用户的默认值。我一直会去看看,但我还没有明白。 – 2011-05-23 08:12:48