managedObjectContext似乎删除了我的NSUserDefault

时间:2011-05-10 08:07:37

标签: iphone objective-c ios nsuserdefaults nsmanagedobjectcontext

保存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应用程序。此片段代码显示在显示课程列表的屏幕上。当我在“站点设置”屏幕上设置userdefault时,我使用[[NSUserDefaults standardUserDefaults] synchronize]。所以我猜它保存得很好

  • 如果我在设置用户默认设置后直接进入课程列表屏幕之前重新启动模拟器,则该代码片段(用户默认设置不会被“save manageObjectContext”删除)。

1 个答案:

答案 0 :(得分:2)

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