【问题标题】:NSUserDefaults always returns 0, in Simulator and DeviceNSUserDefaults 在模拟器和设备中总是返回 0
【发布时间】:2011-02-07 16:25:46
【问题描述】:

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

我做错了什么?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    您可以使用

    检查密钥是否真的存在
    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。

    【讨论】:

    • 当我单击“范围内(公里)”选项时,“设置”应用程序崩溃。我的包裹明显有问题?虽然几天前它还在工作。如果应用程序不自动拾取默认值,那么它的意义何在?
    猜你喜欢
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2015-09-28
    • 1970-01-01
    相关资源
    最近更新 更多