2011-03-29 90 views
1

林將某個應用類似於蘋果天氣應用。我的主視圖有一個要顯示的對象的NSMutableArray。該數組由用戶管理。我希望能夠保存這個數組,以便當應用程序重新啓動時它具有用戶選擇的東西。存儲的對象是「事件」對象,它是一個自定義對象類型,用於存儲更多自定義對象,這些對象都包含以下一些對象:NSString,NSNumber,NSUInteger,NSURL。我的研究使我三個選項,其中沒有一個我認識,也不知道如何實現:節約使用將writeToFile一個plist中,數據存檔,或將其保存到用戶首選項。 有人知道我的問題的解決方案嗎?保存自定義數據類型

數據採樣對象: `

@interface Rider : NSObject { 
    NSString *name; 
} 
-(Rider *) initWithName:(NSString *) nam; 
- (NSString *)description ; 


@property (nonatomic, retain) NSString *name; 

`

回答

0

至少有兩個這三個選項是合理的。 NSUserDefaults對於存儲應用程序首選項來說意味着更多,而不是用於存儲大量數據的選項,因此如果您有大量數據,則應首先查看其他可能性。

屬性列表很容易讀,寫,但你僅限於使用標準類型屈指可數:的NSString,NSData的,NSArray中,NSDate的,和NSNumber的。你可以用這些類型做很多事情,但是因爲你自己的Event類涉及使用屬性列表,所以不會那麼簡單。

存檔似乎是最好的計劃。所有你需要做的就是在你的自定義類中採用一個簡單的協議NSCoding(並確保你使用的其他類,如NSArray也實現NSCoding)。然後,創建一個NSKeyedArchiver的實例並要求它存檔你的對象圖。稍後重新創建對象圖就如此簡單:使用文件數據創建NSUnarchiver實例並取消存檔對象。

您可以閱讀Archives and Serializations Programming Guide中的歸檔和屬性列表。在你走得更遠之前閱讀該文件。

還有其他選項 - 如果需要,您可以隨時使用標準C文件操作直接寫入文件。但是,這不太可能像存檔一樣方便。

0

你的問題本身所具有的答案。

創建每個對象字典的最後,你將有字典的數組。 NSArray和NSDictionary有將其數據寫入文件的方法(首選plist)。如果您使用plist文件,將很容易再次閱讀。