![](/img/trans.png)
[英]Storing NSArray or NSDictionary in keychainWrapper in IOS
[英]NSArray or NSDictionary for storing in UserDefaults?
我有一個當前存儲在NSArray中的用戶類型“新聞”的集合。 我必須將它們存儲在UserDefaults中才能將它們保存在設備上。 新聞具有唯一的屬性ID。 在將它們存儲到UserDefaults之前,我將NSArray轉換為NSDictionary,其中的鍵是ID,此鍵的對象是News。 這是存儲它們的好方法嗎?
選擇NSDictionary的原因是,每次我從Web服務重新下載新聞時,都能夠檢查新聞列表中是否存在具有特定ID的新聞。 這樣,每個新聞ID只能有一個新聞實例。 我認為使用普通的NSArray很難管理-否則我會丟失某些東西?
我必須將它們存儲在UserDefaults中才能將它們保存在設備上。
UserDefaults用於存儲首選項,設置和其他“小”信息,而不用於存儲應用程序數據。 您沒有“擁有”使用NSUserDefaults的權利,您可以使用許多其他選項。 以原始格式(例如,使用NSKeyedArchiver / NSKeyedUnarchiver)寫入文件(在文檔目錄中)。
您可以像這樣獲取文檔目錄路徑
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
除了存儲以新聞ID作為密鑰的NSDictionary之外,還可以。 我真的沒有看到擁有NSArray並將其“轉換”為NSDictionary的意義,而是使用其中的一種(這樣一來,您始終可以確保每個項目只有一個News)。
NSUserDefaults
不是數據庫,但是您已經知道它。
無論如何,我將直接存儲數組,還將最后一次看到的新聞ID保存為單獨的首選項 。 然后,您只需要處理ID大於上次看到的項目的新聞項目。 下載新聞項時,您需要同時更新新聞和上次看到的ID。 您需要確保ID升序。
根據您對新聞的特殊使用,一種不同的方法是保存兩個數組,一個數組存儲新聞項,另一個數組存儲新聞ID列表。 使用第二個數組檢查是否有新消息。
除非您要處理大量新聞項目(在這種情況下,無論如何都應使用Core Data),否則您正在優化不需要優化的內容。 讀取,排序,更新和將小數組保存回NSUserDefaults
的速度非常快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.