2013-02-27 58 views
0

我有UIImages的NSMutuableArray。當試圖將他保存到userDefaults時,我收到警告。 如果它的字符串數組,它的工作正常。將NSMutuableArray保存爲NSUserDefault會發出警告

//save to memory 
    NSMutableArray *savedImages=[[NSMutableArray alloc]init]; 
    for(int j=0;j<[selectedButtonsTags count];j++) 
     [savedImages addObject:[assets objectAtIndex:[[selectedButtonsTags objectAtIndex:j] intValue]]]; 
    [memoryInstance setTempImagesToSend:savedImages]; //here save to NSUserDefault 
    [savedImages release]; 

警告:

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 

爲什麼userdefault關心哪些對象我的數組保存?

回答

4

從文檔爲NSUserDefaults

的類NSUserDefaults的提供用於訪問公共類型,例如浮標方便的方法,雙打,整數,布爾值,和URL。一個默認對象必須是一個屬性列表,也就是一個實例(或集合的實例組合):NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果你想存儲任何其他類型的對象,你通常應該將其存檔以創建一個NSData實例。有關更多詳情,請參閱首選項和設置編程指南。

您會注意到UIImage不在列表中。您必須首先將UIImage轉換爲NSData對象,然後才能將圖像存儲在NSUserDefaults中。

但是,您不應該使用NSUserDefaults來存儲大量的二進制數據。相反,將圖像寫入文件系統。將它們存儲在應用程序沙箱中的適當文件夾中。如果需要,您可以將文件名存儲在NSUserDefaults中。

相關問題