資料持久化

2021-07-05 23:56:09 字數 4958 閱讀 3822

程式執行會分配乙個沙盒檔案,沙盒檔案的檔名每次執行都會變化,資料夾名只一次有效,沙盒一般會儲存程式一些資訊,快取等資料,還可以進行病毒的測試.

沙盒裡有三個資料夾 documents,libary,tmp.

documents資料夾:儲存使用者想要儲存的一些資訊,比如收藏的內容,設定資訊.

library資料夾:用來儲存開發人員儲存的一些東西.

caches快取資料夾:用來對快取資訊進行儲存,清除快取就是刪除該資料夾.

preferences用來儲存一些資訊,nsuserdefaults建立的plist檔案儲存在這個檔案裡.

tmp臨時資料夾:儲存臨時檔案.

nsbundle指的是當前工程的資料夾,在裡面和可以獲取等的資訊,應用程式會在編譯的時候把檔案變成唯讀檔案,存入到nsbundle裡.

一.把簡單的物件存入本地.

// 簡單物件指:nsstring,nsarray....

viewcontroller.m

- (void)viewdidload

1.指定檔案儲存的沙盒檔案路徑.

2.拼接要儲存的檔案路徑.

3.根據路徑,把資料寫入.

4.按照檔案路徑,從本地在讀取資料.

3.把字典寫入到本地.

// 讓複雜類寫入到本地執行歸檔和反歸檔的操作,只有類簽訂nscoding協議之後,實現協議方法才能進行歸檔和反歸檔的操作.

@inte***ce

student : nsobject

@property(nonatomic, copy)nsstring *name;

@property(nonatomic, copy)nsstring *hobby;

@property(nonatomic, assign)nsinteger age;

@property(nonatomic, retain)nsnumber *number;

- (instancetype)initwithname:(nsstring *)name hobby:(nsstring *)hobby

age:(nsinteger)age

number:(nsnumber *)number;

@end

student.m

#import "student.h"

@implementation

student

- (instancetype)initwithname:(nsstring *)name hobby:(nsstring *)hobby

age:(nsinteger)age

number:(nsnumber *)number

return

self;

}- (void)encodewithcoder:(nscoder *)acoder

- (id)initwithcoder:(nscoder *)adecoder

return

self;

}@end

4.把複雜物件,寫入到本地.

student *stu = [[student alloc] init];

stu.name = @"小黑"

; stu.hobby = @"小紅"

; stu.number = @100

; stu.age = 30

; // 歸檔操作.

// 找沙盒路徑.

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

nsstring *sandboxpath = sandbox[0];

nslog(@"%@",docpath);

[nskeyedarchiver archiverootobject:stu tofile:docpath];

// 反歸檔.

student *tempstu = [nskeyedunarchiver unarchiveobjectwithfile:docpath];

nslog(@"%@, %@", tempstu.name, tempstu.hobby);

// 把複雜物件放到陣列裡進行歸檔和反歸檔的操作

student *stu1 = [[student alloc] initwithname:@"小紅" hobby:@"男" age:20 number:@100];

student *stu2 = [[student alloc] initwithname:@"小黃" hobby:@"女" age:21 number:@200];

student *stu3 = [[student alloc] initwithname:@"小白" hobby:@"女" age:22 number:@300];

student *stu4 = [[student alloc] initwithname:@"小黑" hobby:@"男" age:23 number:@400];

nsarray *arr = @[stu1, stu2, stu3, stu4];

for (student *aaa in arr)

// 把複雜物件儲存到陣列中,然後整體進行歸檔和反歸檔的操作

// nsarray因為本身就簽署了nscoding協議,所以可以直接進行歸檔和反歸檔操作,自己寫的複雜類也必須籤nscoding協議,實現方法,否則就會崩潰.

將plist檔案,進行歸檔與反歸檔.

// 1.找路徑

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

nsstring *sandboxpath1 = sandbox1[0];

// 2.拼接路徑.

// 3.歸檔或者是寫入.

[nskeyedarchiver archiverootobject:arr tofile:docpath1];

nslog(@"%@", docpath1);

// 反歸檔.

5.檔案管理

// 1.找到檔案路徑

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

nsstring *sandboxpath2 = sandbox2[0];

// 建立乙個檔案管理者.

nsfilemanager *manager = [nsfilemanager defaultmanager];

// 要拼接乙個資料夾的路徑.

// 根據路徑建立乙個資料夾.

6.刪除資料夾,檔案.

bool result = [manager removeitematpath:docpath2 error:nil];

if (result) else

資料持久化

資料持久化就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱.資料模型可以是任何資料結構或物件模型,儲存模型可以是關係模型 xml 二進位製流等。cmp和hibernate只是物件模型到關係模型之間轉換的不同實現。只不過物件模型和關係模型應用廣泛,所以就會誤認為資料...

資料持久化

首先是cocos2d x自己封閉的ccuserdefault跨平台的檔案儲存類,它是用的xml格式,具體操作非常類似於應用開發的ini檔案,可操作性不是很強,如果訪問比較複雜的資料,那就得自己動手去解析乙個字串,下面是示例 基本一看就懂 void userdefaulttest dotest els...

資料持久化

資料持久化是通過檔案將資料儲存在磁碟上 ios有四種資料持久化方式 1.屬性列表 property list 簡單易用,適合小資料量的儲存和查詢操作,但是不適合大量資料的儲存.屬性列表 1屬性列表 property list nsarray plist name age 指定儲存的地方 nsstri...