为什么stringForKey返回null?

时间:2011-05-11 20:07:08

标签: objective-c cocoa nsuserdefaults

在我的 viewDidLoad 方法中我想读取用户默认值。但

NSLog(@"%@", [prefs stringForKey:@"gateway_picker"]);

打印(null)。为什么呢?

gateway_picker默认值设置为 1

1 个答案:

答案 0 :(得分:3)

因为它设置为数字1,可以是整数,浮点数或布尔值,并且与NSControl不同,NSUserDefaults不会尝试将值转换为您请求的类型。

请改用objectForKey:。这将返回对象,无论它是字符串还是其他任何东西。

如果您想以数字方式解释它,请向对象询问integerValuefloatValueboolValue。无论对象是NSString还是任何类型的NSNumber,这都将起作用。 (如果是数据,日期,数组或字典,这将导致异常。在这种情况下,您可能希望检测此类值并替换默认值。)

如果您特别想要一个字符串,请检测该对象是否为数字并询问其stringValue(如果是)。 (同样,您可能还希望处理接收数据,日期,数组或字典。)