簡體   English   中英

NSArray或NSDictionary用於存儲在UserDefaults中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM