Xcode 6中的NSUserDefaults无法工作

7
Xcode 6 中:在设备模拟器(iPhone 5、iPhone 6等模拟器)中,NSUserDefaults无法正常工作。
如果您在真实设备上进行测试,则可以正常工作。有人知道如何将此信息发送给Apple吗?我已经尝试联系过Apple,但没有收到答复。
由于在我的国家还不可用,因此我无法在真正的iPhone6或iPhone6 Plus上进行测试。
以下是一个示例代码,它在设备上完美运行:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *appTheme = [defaults objectForKey:@"theme_preference"];

if ([appTheme isEqualToString:@"color0"]) {

} else {

}

可能我没有表达清楚。

用户在“iPhone或iPad设置”中必须更改应用程序的设置参数。

这些设置是通过“Settings.bundle”的“Root.plist”实现的。

也就是说,我试图测试用户更改应用程序的参数。但在源代码中,我看不到这些变化。 我一直谈论的是设备模拟器(Xcode6)

应用设置


运行哪个版本的iOS? - trojanfoe
2
我在使用NSUserDefaults时遇到了类似的问题。我认为这只是当前版本(版本6.0.1(6A317))出现了故障。也许下一个版本会修复这个问题?我希望如此。 - siannopollo
我的模拟器版本是v8.0(550.1),但它不能正常工作 - 就像上面描述的那样。 - Vladimír Slavík
和我一样,浪费了4个小时进行调试,才发现是模拟器的问题。可能与扩展和新的 NSUserDefaults 读取方式有关。稍后会尝试这个方法。 - Metodij Zdravkin
5个回答

2
今天我终于解决了问题。我安装了最新版本的Xcode(6.1版),然后重置了模拟器。
接着,我打开了设置应用程序。在你打开应用程序的设置之前,设置不会被复制到模拟器(或真实设备)中。 至少要访问一次您的应用程序设置。

0

尝试以这样的方式保存数据:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"color0" forKey:@"theme_preference"];
[defaults synchronize];

然后稍后调用它:
NSString *appTheme = [defaults objectForKey:@"theme_preference"];
if ([appTheme isEqualToString:@"color0"]) {

} else {

}

我尝试测试用户更改应用程序的参数。但是在源代码中,我看不到这些更改。我总是谈论设备模拟器(Xcode6)。 - Markus
这是不正确的。如果你的默认参数是一个整数(例如),你必须这样调用它:[defaults integerForKey:@"strokeSize_preference"]; 这是不正确的:objectForKey - Markus

0

在菜单中进入iOS模拟器,然后点击重置内容和设置,现在您的问题应该得到解决。


0

现在使用xCode6和ios8时,这是一个常见的问题。

我发现当你遇到NSUserDefaults的问题时,重置模拟器内容和设置就可以解决。

当我从模拟器中删除应用程序时,用户默认值并没有被清除。

然后我重置了模拟器,问题得到了解决。

因此,目前最好的测试模拟器的方法是每次想要删除应用程序时都重置模拟器,直到苹果提供修复为止。

这对我很有效,希望也能帮助其他人。


0

这是iOS模拟器的一个bug,你需要前往iOS模拟器 > 重置内容和设置来重置设备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接