- NSUserDefault
一般來說,小規模數據,弱業務相關數據,都可以放到NSUserDefault裡面,內容比較多的數據,強業務相關的數據就不太適合NSUserDefault了
- KeyChain
Keychain是蘋果提供的帶有可逆加密的存儲機制,普遍用在各種存密碼的需求上。另外,由於App卸載只要系統不重裝,Keychain中的數據依舊能夠得到保留,以及可被iCloud同步的特性,大家都會在這裡存儲用戶唯一標識串。所以有需要加密、需要存iCloud的敏感小數據,一般都會放在Keychain。
- 文件儲存
文件儲存包括了Plist、archive、Stream等方式,一般結構化的數據或者需要方便查詢的數據,都會以Plist的方式去持久化。 Archive方式適合儲存平時不太經常使用但很大量的數據,或者讀取之後希望直接對象化的數據,因為Archive會將對象及其對象關係序列化,以至於讀取數據的時候需要Decode很花時間,Decode的過程可以是解壓,也可以是對象化,這個可以根據具體中的實現來決定。 Stream就是一般的文件存儲了,一般用來存存圖片啊啥的,適用於比較經常使用,然而數據量又不算非常大的那種。
- 資料庫儲存
資料庫儲存的話,花樣就比較多了。蘋果自帶了一個Core Data,當然業界也有無數替代方案可選,不過真正用在iOS領域的除了Core Data外,就是FMDB比較多了。數據庫方案主要是為了便於增刪改查,當數據有狀態和類別的時候最好還是採用數據庫方案比較好,而且尤其是當這些狀態和類別都是強業務相關的時候,就更加要採用數據庫方案了。因為你不可能通過文件系統遍歷文件去甄別你需要獲取的屬於某個狀態或類別的數據,這麼做成本就太大了。當然,特別大量的數據也不適合直接存儲數據庫,比如圖片或者文章這樣的數據,一般來說,都是數據庫存一個文件名,然後這個文件名指向的是某個圖片或者文章的文件。如果真的要做全文索引這種需求,建議最好還是掛個API丟到伺服端去做。
沒有留言:
張貼留言