2011-11-02 77 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?:@"")]) {