2015-11-20 43 views
0

在我的iOS應用程序中,我需要跟蹤哪些序列號已從服務器接收,以及需要檢索哪些序列號。我希望能夠存儲這個應用程序終止或崩潰的情況下。如何在iOS中存儲序列號的動態列表

我試圖決定我應該使用哪種存儲方法:核心數據的plist等

序列號的名單是動態的,可以改變很多。任何關於如何決定存儲的指針都將不勝感激。

+1

NSUserDefaults的使用得心應手..和快速...讓一個數組或字典和存儲這在userDefaults –

回答

0

如果沒有更準確的細節問題,很難給出準確的答案。但是,可以提供的是有關使用上述存儲系統的好處/不足的一些見解。

我會遠離使用plist,因爲你的數據是動態的,可以改變很多。每次你保存到plist,你都需要覆蓋整個文件。這意味着要更改單個值,您必須檢索所有值,進行單一更改並將所有值保存回plist。這不是一種模塊化的方式來做這種保存,如果你有很多信息在變化,並且需要隨時保存,那麼這種方式可能會產生問題。另一方面 - 建立一個plist保存/讀寫結構非常簡單快捷。

NSUserDefaults應該用於這一點。保存用戶設置和首選項。使用NSUserDefaults非常簡單,但如果數據非常龐大,從長遠來看可能會變得非常困難。從NSUserDefaults返回的值也是不可變的。這可能會或可能不會成爲您需要的問題。

CoreData對於你正在做的事情可能矯枉過正,除非你的序列號非常大。就我個人而言,我會與CoreData一起了解它如何處理動態值以及與plist和NSUserDefaults相比保存對象的速度。缺點是CoreData是一個學習曲線。除非以前使用過它,否則使用它很容易走錯路。

至於指向哪個存儲選項使用,做一些研究。列出每個存儲選項的優缺點。問問你自己有多大的數據可以得到,什麼是最好的解決方案。你已經知道數據是動態的,可能會有很大的改變。查看每個存儲解決方案的性能。

下面是一些有用的閱讀材料的鏈接直接從蘋果:

Plist

NSUserDefaults

CoreData

+0

謝謝。如果我執行多個提取請求,而不進行任何保存,將在從內存中執行第一個請求後取回請求,而不是返回到核心數據存儲區?我會不斷更新seq號碼並定期保存,以確保在應用程序崩潰或終止時不會丟失數據。使用plist方法,我正在考慮將seq數字存儲在數組中,操作數組來添加/刪除東西並定期將其存回。使用COreData我可以做同樣的事情,或者我可以每次假設獲取序列號數組,假定後續的提取來自內存 –

+0

您可以按照您計劃使用的plist方法對CoreData執行相同操作。 CoreData沒有將數組保存爲默認選項,而是希望在實體中設置具有瞬態類型的屬性。爲什麼不只是創建一個具有保存seq號碼的屬性的實體。每次從您的服務中輸入新號碼時,請將其保存。如果它發生變化,請取出,更新並保存回去? – MatthewJames

相關問題