我正在尝试为我的应用程序创建一些设置。其中之一是排序设置,可以为0,1,2。目前,我有一个枚举来处理此问题:
typedef NS_OPTIONS(NSInteger, SearchSort) {
SearchSortDefaultBestMatched = 0,
SearchSortDistance = 1,
SearchSortHighestRated = 2
};
从选择器中选择一个值后,我会更新
[NSUserDefaults standardDefaults] setInteger:
但是,当用户首次运行该应用程序时,没有默认设置。我发现的是,如果检查
[[NSUserDefaults standardUserDefaults] integerForKey:...];
,它将返回0。这是不正确的。这是存储此值/检查默认值是否正确的正确过程吗?理想情况下,我希望使用nil而不是0,因为0可能是一个选择。除非提出的解决方案当然是将值存储为1,2,3并来回转换。
最佳答案
NSUserDefaults为此有一个方法registerDefaults
。您给它提供了一个“默认默认”键/值对的字典。这些将成为您要求尚未设置的给定密钥时获得的初始值。
我总是在我的应用程序委托的+initialize
类方法中添加初始默认值。该方法在系统分配/初始化应用程序委托之前被调用,因此在您的应用程序的任何自定义代码(除main中的代码之外)被调用之前被调用。
编辑:
正如@AdamEberbach在他的答案中建议的那样,您也可以使用objectForKey:
代替integerForKey
。如果未存储任何值,则返回nil;如果已存储值,则返回NSNumber
(其值可能为零)。
关于ios - 使用NSUserDefaults的整数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23771534/