NSUserDefaults始终在Simulator和Device中返回0

时间:2010-04-13 22:26:48

标签: iphone-sdk-3.0 ios-simulator nsuserdefaults

我的iPhone应用程序中有一个设置包,包含以下PList:

Type: PSMultiValueSpecifier
Title: Within (Kilometres)

DefaultValue: Number: 1
Titles: Array:
    Item 1: Number: 1
    Item 2: Number: 2
Values: Array:
    Item 1: Number: 1
    Item 2: Number: 2
Key: String: km

然后在我的代码中我有:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
NSInteger choiceOne = [defaults integerForKey:@"km"];

choiceOne始终为0.

我做错了什么?

由于

1 个答案:

答案 0 :(得分:0)

您是否尝试过实际启动“设置”应用并选择“内部”设置,然后返回应用进行检查?该应用程序不会自动采用默认值。

您可以使用

检查密钥是否确实存在
NSNumber* obj = [defaults objectForKey:@"km"];
NSInteger choiceOne;
if (obj == nil) {
  choiceOne = 1; 
  [defaults setInteger:choiceOne forKey:@"km"];
} else {
  // check whether obj really implements -integerValue if needed.
  choiceOne = [obj integerValue];
}

或者,如果它超出预期范围,则将其设置为1.