2012-04-12 110 views
0

可能重複:
Storing custom objects in an NSMutableArray in NSUserDefaults
How to store custom objects in NSUserDefaults如何將對象添加到NSMutableArray中以存儲在NSUserDefaults中?

我試圖存儲從一個類實例化一個對象我編寫的名爲 「動物」 在一個NSMutableArray存儲在NSUserDefaults的。但是,我得到這個錯誤。

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
    "<Animal: 0xcea7060>" 
)' of class '__NSArrayM'. Note that dictionaries and arrays in property lists must also contain only property values. 

這是什麼意思?也許我不能將對象存儲在NSMutableArrays中以存儲在NSUserDefaults中?

+3

的可能重複[如何在存儲NSUserDefaults的自定義對象(http://stackoverflow.com/q/2315948/);也http://stackoverflow.com/q/7459585/,http://stackoverflow.com/q/537044/和http://stackoverflow.com/q/471830/ – 2012-04-12 19:48:28

回答

3

NSUserDefaults可以存儲陣列和字典,可變的或沒有,但只有當它們包含屬性列表法律類(NSNumberNSStringNSData,和其他一些)。對於其他課程,在將其放入NSUserDefaults(或放入要放入NSUserDefaults或寫入屬性列表的集合中)之前,您應該使用serialize the object(s) into an NSData

將自定義類放入NSUserDefaults並不會在大多數應用中經常發生,因此您可能還會考慮您的Animal是否真的屬於此類。請記住,NSUserDefaults適用於設置,狀態和其他小事情 - 您的應用管理的數據在其他地方更好。使用archiving或屬性列表在您的應用程序沙箱中寫入文件,或者使用核心數據(或某些其他數據庫)來編寫這些文件。

-3

可以簽出ArchiveSerialization

相關問題