nsuserdefaults被設計用來儲存裝置和應用的配置資訊,它通過乙個工廠方法返回預設的、也是最常用到的例項物件。這個物件中儲存了系統中使用者的配置資訊,開發者可以通過這個例項物件對這些已有的資訊進行修改,也可以按照自己的需求建立新的配置項。
/**
1. 該單例物件封裝了對plist檔案的讀寫操作,可以對每個字段單獨讀寫
2. 該plist檔案在系統的library/preferences目錄下,名字為<>
*/nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];
// 2. 寫操作
// 將開關的值記錄到plist檔案中,鍵為"switch"
[defaults setbool:_toggle.on forkey:@"switch"];
// 將進度值文字框的內容記錄到plist檔案中,鍵為"progress"
nsstring *progress = _progresstextfield.text;
float progressvalue = [progress floatvalue];
[defaults setfloat:progressvalue forkey:@"progress"];
// 將輸入文字框的內容記錄到plist檔案中,鍵位"input"
[defaults setobject:_inputtextfield.text forkey:@"input"];
// 3. 將記憶體中的配置值,重新整理到plist檔案中
[defaults synchronize];
nsuserdefaults把配置資訊以字典的形式組織起來,支援字典的項包括:字串或者是陣列,除此之外還支援數字等基本格式。一句話概括就是:基礎型別的小資料的字典。操作方法幾乎與nsdictionary的操作方法無異,另外還可以通過指定返回型別的方法獲取到指定型別的返回值。nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];
_toggle.on = [defaults boolforkey:@"switch"];
_progressview.progress = [defaults floatforkey:@"progress"];
_label.text = [defaults stringforkey:@"input"];
ios的sdk裡預置了sqlite的庫,開發者可以自建sqlite資料庫。sqlite每次寫入資料都會產生io消耗,把資料歸檔到相應的檔案。
sqlite擅長處理的資料型別其實與nsuserdefaults差不多,也是基礎型別的小資料,只是從組織形式上不同。開發者可以以關係型資料庫的方式組織資料,使用sql dml來管理資料。 一般來說應用中的格式化的文字類資料可以存放在資料庫中,尤其是類似聊天記錄、timeline等這些具有條件查詢和排序需求的資料。
每乙個資料庫的控制代碼都會在記憶體中都會被分配一段快取,用於提高查詢效率。另乙個方面,由於查詢快取,當產生大量控制代碼或資料量較大時,會出現快取過大,造成記憶體浪費。
sqlite的使用起來要比nsuserdefaults複雜的多,因此建議開發者使用sqlite要搭配乙個操作控制項使用,可以簡化操作。
1.nscoding協議
// 解檔 反序列化 解碼 從data
(file)->物件
- (instancetype)initwithcoder:(nscoder *)adecoder
return self;
}// 歸檔 序列化 編碼 從物件->data
(file)
- (void)encodewithcoder:(nscoder *)acoder
2.儲存資料sfstudent *student = [[sfstudent alloc] init];
student.name = _name.text
; student.age = [_age.text intvalue];
student.identify = _identify.text
; // 將student物件歸檔到檔案
[nskeyedarchiver archiverootobject:student tofile:_path];
3.讀取資料// 解檔出乙個物件
sfstudent *student = [nskeyedunarchiver unarchiveobjectwithfile:_path];
if (student == nil)
_name.text = student.name;
_age.text = [@(student.age) strin**alue];
_identify.text = student.identify;
資料持久化
資料持久化就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱.資料模型可以是任何資料結構或物件模型,儲存模型可以是關係模型 xml 二進位製流等。cmp和hibernate只是物件模型到關係模型之間轉換的不同實現。只不過物件模型和關係模型應用廣泛,所以就會誤認為資料...
資料持久化
首先是cocos2d x自己封閉的ccuserdefault跨平台的檔案儲存類,它是用的xml格式,具體操作非常類似於應用開發的ini檔案,可操作性不是很強,如果訪問比較複雜的資料,那就得自己動手去解析乙個字串,下面是示例 基本一看就懂 void userdefaulttest dotest els...
資料持久化
資料持久化是通過檔案將資料儲存在磁碟上 ios有四種資料持久化方式 1.屬性列表 property list 簡單易用,適合小資料量的儲存和查詢操作,但是不適合大量資料的儲存.屬性列表 1屬性列表 property list nsarray plist name age 指定儲存的地方 nsstri...