1.plist檔案的訪問
1.1 document的目錄搜尋
// 1.拼接字串
nsstring* homepath = nshomedirectory(); (獲得沙盒路徑)
// 2.系統提供的搜尋
// searchpath:搜尋路徑 fordirectories:哪個資料夾 indomains:在哪搜尋
nsstring* docpath = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)[0];
1.2// 什麼能做plist儲存
// 一定要有write to file的方法
如果物件是nsstring、nsdictionary、nsarray、nsdata、nsnumber等型別,就可以使用writetofile:atomically:方法直接將物件寫到屬性列表檔案中
// 獲取doc目錄
// nsdocumentdirectory : 搜尋哪個資料夾
// nsuserdomainmask : 在哪搜尋
nsstring* docpath = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)[0];
// filepath 存放的檔案完整路徑名
// // 建立乙個字典
// nsdictionary* dict = @;
//// // 存
// [dict writetofile:filepath atomically:yes];
// 建立array
nsarray* array = @[ @"語句", @"你好" ];
// atomically:執行緒安全的
[array writetofile:filepath atomically:yes];
1.3讀取資料
// 獲取doc目錄
nsstring* docpath = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)[0];
// filepath
// nsdictionary* dict = [nsdictionary dictionarywithcontentsoffile:filepath];
// nslog(@"%@", dict);
2.偏好設定的儲存
// 存資料
// 1.不需要關心檔名
// 2.快速的做鍵值對的儲存
// 3. nsuserdefaults 實際上就是系統對字典的封裝
nsuserdefaults* ud = [nsuserdefaults standarduserdefaults];
[ud setobject:@"value" forkey:@"key"];
[ud setbool:yes forkey:@"ison"];
// 同步 ios8以後不需要呼叫也可以正常使用
//注意:userdefaults設定資料時,不是立即寫入,而是根據時間戳定時地把快取中的資料寫入本地磁碟。所以呼叫了set方法之後資料有可能還沒有寫入磁碟應用程式就終止了。出現以上問題,
[ud synchronize];
// 取資料
nsuserdefaults* ud = [nsuserdefaults standarduserdefaults];
nslog(@"%@", [ud objectforkey:@"key"]);
nskeyedarchiver 歸檔和回檔
如果物件是nsstring、nsdictionary、nsarray、nsdata、nsnumber等型別,可以直接用nskeyedarchiver進行歸檔和恢復
不是所有的物件都可以直接用這種方法進行歸檔,只有遵守了nscoding協議的物件才可以
nscoding協議有2個方法:
encodewithcoder:
每次歸檔物件時,都會呼叫這個方法。一般在這個方法裡面指定如何歸檔物件中的每個例項變數,可以使用encodeobject:forkey:方法歸檔例項變數
initwithcoder:
每次從檔案中恢復(解碼)物件時,都會呼叫這個方法。一般在這個方法裡面指定如何解碼檔案中的資料為物件的例項變數,可以使用decodeobject:forkey方法解碼例項變數
如果父類也遵守了nscoding協議,請注意:
應該在encodewithcoder:方法中加上一句
[super encodewithcode:encode];
確保繼承的例項變數也能被編碼,即也能被歸檔
應該在initwithcoder:方法中加上一句
self = [super initwithcoder:decoder];
確保繼承的例項變數也能被解碼,即也能被恢復
// 存資料
// tmp 檔案路徑的獲取
//將檔案存放到tmp臨時資料下
nsstring* tmppath = nstemporarydirectory();
teacher* t = [[teacher alloc] init];
t.name = @"tom";
t.age = 18;
[nskeyedarchiver archiverootobject:t tofile:filepath];
// 取資料
nsstring* tmppath = nstemporarydirectory();
teacher* t = [nskeyedunarchiver unarchiveobjectwithfile:filepath];
nslog(@"%d", t.age);
在teacher類中
@implementation
teacher
// 告訴系統需要歸檔哪些屬性
- (void)encodewithcoder:(nscoder*)acoder
// 告訴系統解檔哪些屬性
- (id)initwithcoder:(nscoder*)adecoder
return
self;
}@end
沙盒儲存機制
1.documents 儲存應用執行時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄 nsstring document nssearchpathfordirectoriesindomains nsdocumentdirectory nsuserd...
IOS資料儲存之檔案沙盒儲存
前言 接下來具體認識一下沙盒儲存 每個ios應用都有自己的應用沙盒,應用沙盒就是檔案系統目錄,與其他應用的檔案系統隔離,ios系統不允許訪問其他應用的應用沙盒。在ios8中已經開放訪問。應用沙盒一般包括以下幾個檔案目錄 應用程式包 documents libaray 下面有caches和prefer...
沙盒檔案管理
沙盒檔案 每個ios 應用都有自己的應用沙盒,應用沙盒就是檔案系統目錄,與其他應用的檔案系統隔離,ios系統不允許訪問其他應用的應用沙盒。在 ios8 中已經開放訪問。應用沙盒一般包括以下幾個檔案目錄 應用程式包 documents libaray 下面有 caches 和preferences 目...