3

我有一个带有 Settings.bundle 文件的应用程序。我为特定字段添加了一个默认值,但每当我想在 iOS 8.2 上的应用程序中读取它时,我都会得到“nil”。但是,当我在 iOS 7.1(基本上是 iOS 8.2 以下的每个版本)上执行此操作时,我得到了正确的默认值。

有谁知道 iOS 8.2 中是否发生了导致此问题的更改以及如何解决此问题?我已经删除了该应用程序并重新构建。也许是一个小提示,我使用 Xcode 5 构建。但如果我使用的是 Xcode 5 或 Xcode 6,这没有任何区别。测试了这个。

代码:我如何检索默认值:

id settings = [NSUserDefaults standardUserDefaults];
[settings objectForKey:@"defaultValueUrl"];

Settings.bundle:http: //i62.tinypic.com/10nrmhd.png

谢谢!

4

1 回答 1

4

设置包中的默认值不会写入应用程序的 NSUserDefaults,直到用户实际转到设置并更改它们。情况一直如此。不知道为什么它以前对你“有效”——也许你从来没有从设备上卸载过这个应用程序并且它保留了旧的设置?

您应该在代码中做的是在启动时注册默认设置。(是的,这在某种程度上重复了您的设置包中正在发生的事情。这就是生活。)

[[NUSUserDefaults standardDefaults] registerDefaults:
@{ @"defaultValueURL": @"http://example.com" }];

现在,无论有无设置包,此默认键将始终具有正确的默认值。

阅读这篇文章了解更多信息。

于 2015-03-20T10:15:26.973 回答