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