資料的持久化儲存

2021-07-10 03:53:22 字數 1806 閱讀 3031

1.屬性列表

2.物件歸檔

3.資料庫儲存(sqlite3)(用c寫的,後來有了fmdb,fmdb是用oc寫的,輕量級且用著方便)

4.蘋果公司提供的永續性工具core data。

用法解析:

1,儲存鍵值對小資料是最合適,因為速率很高,plist,nsuserdefaults

屬性列表儲存機制,這個機制支援nsarray,nsdictionary,nsdata,nsstring,nsnumber,nsdate 等等

[cpp]view plain

copy

nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);  

nsstring *docpath = [paths objectatindex:0];  

];  

//讀取檔案

nsarray *array = [[nsarray alloc] initwithcontentsoffile:myfile];  

//操作完若修改了資料則,寫入檔案

[array writetofile:myfile atomically:yes];  

1).分開訪問

// 存

[[nsuserdefaults standarduserdefaults] setinteger:userid forkey:@」userid」];

[[nsuserdefaults standarduserdefaults] setobject:name forkey:@」name」];

// 取

nsinteger uid = [[[nsuserdefaults standarduserdefaults] integervalueforkey:@」userid」];

nsstring* name = [[nsuserdefaults standarduserdefaults] stringforkey:@」name」];

2).按物件訪問

// 存

[[nsuserdefaults standarduserdefaults] setobject:self forkey:@」user」];

// 取

user* u = [[nsuserdefaults standarduserdefaults] objectforkey」@」user」];

2.物件歸檔

要使用物件歸檔,物件必須實現nscoding協議.大部分object c物件都符合nscoding協議,也可以在自定義物件中實現nscoding協議,要實現nscoding協議,實現兩個方法:

- (void) encodewithcoder:(nscoder *)encoder 與 -(void)initwithcoder:(nscoder *)encoder

同時,建議物件也同時實現nscopying協議,該協議允許複製物件,要實現nscopying協議須實現 -(id)copywithzone:(nszone *)zone 方法 。

- (void

)encodewithcoder:(nscoder *)acoder  

- (id)initwithcoder:(nscoder *)adecoder  

returnself;  

}  3.只是建議不直接操作sqlite庫,而是採用一些開源的第三方庫來進行操作。比如:

fmdb:

對sqlite都做了不錯的封裝。

4.core data資料持久化是對sqlite的乙個公升級,它是ios整合的

資料的持久化儲存

對於乙個程式,就像乙個計算機的縮影,程式又輸入 輸出 資料儲存 執行 資料的處理 其中,資料的儲存在程式中占有相當大的比例和作用。在程式的執行過程中,可以把程式中的資料分為,全域性 區域性 靜態 常數等不同的資料狀態,同時把資料型別分為 整形 字元型別 浮點型 字串等等,資料存放在記憶體佇列 堆疊 ...

資料持久化儲存技術

儲存在記憶體中的資料是處於瞬時狀態的,而儲存在儲存裝置中的資料是處於持久化狀態的 檔案儲存 特點 不對儲存的內容進行任何的格式化處理,所有資料都是原封不動的儲存到檔案中的。儲存型別 簡單的文字資料或二進位制資料 sharedpreferences儲存 特點 使用鍵值對的方式,sp儲存預設使用xml格...

Scrapy 資料持久化儲存

本文首發於我的部落格 gongyanli.com 前言 本文主要講解scrapy的資料持久化,主要包括儲存到資料庫 json檔案以及內建資料儲存 pipelins.py import json from scrapy.exceptions import dropitem class mypipeli...