为什么stringForKey返回null?

问题描述:

在我的viewDidLoad方法我想读取用户的默认值。但是为什么stringForKey返回null?

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

打印(null)。为什么?

gateway_picker默认值设置为。

因为它被设置为数字1,作为整数,浮点数或布尔值,而不像NSControl,NSUserDefaults不会尝试将值转换为您请求的类型。

改为使用objectForKey:。这将返回对象,无论它是否是字符串或其他。

如果您然后想要数字解释它,请询问对象的其integerValuefloatValueboolValue。无论对象是NSString还是任何类型的NSNumber,这都可以工作。 (如果是数据,日期,数组或字典,这将引发异常,您可能需要检测这些值并在此情况下替换默认值。)

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

+0

Hm this returns(null)too。 – 2011-05-11 20:31:36