我當前正在寫入和讀取數據數組,並使用每個元素的索引來實現某些內容。我需要一種方法來存儲這個數組,我查看了用戶的默認值,但是存儲了一個字典,使用了鍵盤的中間值。我不知道存儲了什麼密鑰。將數據序列化序列化
什麼是最好的是存儲在iPhone上的數據數組?
問候
我當前正在寫入和讀取數據數組,並使用每個元素的索引來實現某些內容。我需要一種方法來存儲這個數組,我查看了用戶的默認值,但是存儲了一個字典,使用了鍵盤的中間值。我不知道存儲了什麼密鑰。將數據序列化序列化
什麼是最好的是存儲在iPhone上的數據數組?
問候
的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]];
}
你可能想序列陣列的字典,如果你有你想存儲不止一個。
可以將數組存儲在NSUserDefaults中。但它取決於數組所保存的對象的類型。 NSKeyedArchiver是另一個不錯的選擇,就像將數組存儲爲plist一樣。它甚至可能是CoreData是您的最佳選擇。這一切都取決於數據的預期大小以及如何使用它。 NSKeyedArchiver在許多情況下似乎是一個公平的中間地帶,但要回答您的問題,需要更多信息。
我只是在數組中存儲NSString。 我從一個文本字段中獲取用戶輸入(用戶保存一個'最愛'的標題,我添加了他們想要保存的圖片索引) 然後,當從數組中讀取數據時,我只關閉索引,填充tableview與陣列中的所有標題。用戶然後可以選擇一個收藏夾,並從該數組中提取圖像引用並加載到屏幕上。它不應該超過50個字符串。 – jarryd 2010-07-07 07:50:26
聽起來像存儲到plist將是最適合您的情況。我建議切換到使用NSDictionary,而不是附加圖片索引。你最喜歡的自定義類可能會更好,但是你應該使用NSKeyedArchiver。 – 2010-07-07 08:08:51
我試過NSDictionary,但問題是我使用數組的索引來訪問值我不知道的關鍵。我想要知道的只是存儲數組,然後加載它。現在我讀取和寫入數組,所以我只想序列化和反序列化它。 – jarryd 2010-07-07 08:14:38
欣賞它。 :D – jarryd 2010-07-07 07:17:51
「someInfo」涉及什麼? – jarryd 2010-07-07 07:26:38
這是文件的名稱。 – 2010-07-07 08:24:38