获取objectforkey时nsuserdefault崩溃

时间:2011-11-02 08:15:14

标签: iphone nsuserdefaults

我在NSUserDefault词典中存储了一些图像,我在我的应用程序的不同位置使用它。

我的代码

  userDefault=[NSUserDefaults standardUserDefaults];
  if([userDefault objectForKey:flgString]) {

崩溃场景罕见,并且仅在我的应用首次加载时(当所有缓存数据为空时)。 一旦从服务器获取所有图像并将其加载到缓存中,它就不会崩溃。

以下是崩溃日志,有什么想法吗?

#0  0x01afca67 in objc_msgSend ()
#1  0x019cffdf in kCFCoreFoundationVersionNumber ()
#2  0x019b33d8 in __CFBasicHashStandardEquateKeys ()
#3  0x019b1fe7 in ___CFBasicHashFindBucket_Linear ()
#4  0x018bd632 in CFBasicHashFindBucket ()
#5  0x018bd50c in CFDictionaryGetValue ()
#6  0x018e273b in -[CFXPreferencesPropertyListSource getValueForKey:] ()
#7  0x018e26c6 in -[CFXPreferencesSearchListSource getValueForKey:] ()
#8  0x018df0ee in CFPreferencesCopyAppValue ()
#9  0x002d42e8 in -[NSUserDefaults(NSUserDefaults) objectForKey:] ()
#10 0x000f8633 in -[XController tableView:cellForRowAtIndexPath:]

修改 我没有将UIImage存储在userdefault中,而是存储NSData。

2 个答案:

答案 0 :(得分:0)

您的用户默认值中的对象看起来不是基本的property-list类型。这是不允许的。

答案 1 :(得分:0)

“key”必须不是nil,崩溃是“flgString”是nil,如果是nil,你可以为它设置@“”。

正确的代码

userDefault=[NSUserDefaults standardUserDefaults];

if([userDefault objectForKey:(flgString?:@"")]) {