设置NSUserDefault崩溃

时间:2013-07-18 14:13:12

标签: ios objective-c nsuserdefaults

我在用户默认值中设置了一个值,我不知道它崩溃的原因:

[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:@"STRING"];

这很好,但

[[NSUserDefaults standardUserDefaults] setObject:[textField text] forKey:settingKey];

事实并非如此。 settingKey是在我正在使用的类中声明和合成的属性。事实上,即使这行也可以使用

[textField setText:[[NSUserDefaults standardUserDefaults] objectForKey:settingKey]];

当模拟器崩溃时,它会把我带到Core Foundation Hash(CFHash),我无法理解:

0x1c24756: call 0x1d79a00; symbol stub for: getpid

"Thread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)"

2 个答案:

答案 0 :(得分:2)

这里的问题是settingKey是null值。

if you are trying to set null value as an key arguement then it'l happend.

答案 1 :(得分:0)

我不确定你的密钥到底是什么类型的对象,因此崩溃可能是由以下两个问题之一引起的:

  1. settingKey不是可以存储在NSDictionary中的对象。存储在NSUserDefaults中的任何键及其值必须是NSString,NSInteger等。它不能是原始数据类型,如int或BOOL。更具体地说,密钥必须是NSString。
  2. settingKey NULL ,尚未分配,或者已过早解除分配,然后NSUserDefaults将导致崩溃。 NSUserDefaults(或NSDictionaries)中的密钥不能为空