2010-07-07 95 views
2

我當前正在寫入和讀取數據數組,並使用每個元素的索引來實現某些內容。我需要一種方法來存儲這個數組,我查看了用戶的默認值,但是存儲了一個字典,使用了鍵盤的中間值。我不知道存儲了什麼密鑰。將數據序列化序列化

什麼是最好的是存儲在iPhone上的數據數組?

問候

回答

3

的NSKeyedArchiver,一個具體的子類NSCoder的 ,提供了一種編碼 對象(和標量值)到一個 體系結構無關的格式, 可以存儲在一個文件中。

所以,你可以序列化任何你喜歡的文件:

// need a path 
- (NSString*) getPath 
{ 
    NSString* path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
    return [path stringByAppendingPathComponent:@"someInfo"]; 
} 

// save an array 
- (void) save:(NSArray*)array 
{ 
    [NSKeyedArchiver archiveRootObject:array toFile:[self getPath]];  
} 

// get that array back 
- (NSArray*) load 
{ 
    return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getPath]];  
} 

你可能想序列陣列的字典,如果你有你想存儲不止一個。

+0

欣賞它。 :D – jarryd 2010-07-07 07:17:51

+0

「someInfo」涉及什麼? – jarryd 2010-07-07 07:26:38

+0

這是文件的名稱。 – 2010-07-07 08:24:38

1

可以將數組存儲在NSUserDefaults中。但它取決於數組所保存的對象的類型。 NSKeyedArchiver是另一個不錯的選擇,就像將數組存儲爲plist一樣。它甚至可能是CoreData是您的最佳選擇。這一切都取決於數據的預期大小以及如何使用它。 NSKeyedArchiver在許多情況下似乎是一個公平的中間地帶,但要回答您的問題,需要更多信息。

+0

我只是在數組中存儲NSString。 我從一個文本字段中獲取用戶輸入(用戶保存一個'最愛'的標題,我添加了他們想要保存的圖片索引) 然後,當從數組中讀取數據時,我只關閉索引,填充tableview與陣列中的所有標題。用戶然後可以選擇一個收藏夾,並從該數組中提取圖像引用並加載到屏幕上。它不應該超過50個字符串。 – jarryd 2010-07-07 07:50:26

+0

聽起來像存儲到plist將是最適合您的情況。我建議切換到使用NSDictionary,而不是附加圖片索引。你最喜歡的自定義類可能會更好,但是你應該使用NSKeyedArchiver。 – 2010-07-07 08:08:51

+0

我試過NSDictionary,但問題是我使用數組的索引來訪問值我不知道的關鍵。我想要知道的只是存儲數組,然後加載它。現在我讀取和寫入數組,所以我只想序列化和反序列化它。 – jarryd 2010-07-07 08:14:38