1

我的 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。

我究竟做错了什么?

谢谢

4

1 回答 1

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。

于 2010-04-13T22:32:32.057 回答