2011-11-02 46 views
1

我在我的应用程序的各个地方使用的NSUserDefault字典中存储了一些图像。nsuserdefault在获取objectforkey时崩溃

我的代码

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。

+0

ü需要UNCODE解码,同时节省和retreving数据?不知道这个 – Sanju

回答

0

看起来您正在将对象放在您的用户默认设置中,这些对象不是基本的property-list类型。这是不允许的。

+0

我没有在userdefault中存储UIImage,而是存储NSData,我认为这是允许的。 – Anand

0

“key”必须不为零,崩溃为“flgString”为零,如果为零,则可以为其设置@“”。

正确的代码

userDefault=[NSUserDefaults standardUserDefaults]; 

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