注意在這個筆記裡有部分路徑為方法,需要自己定義,在這裡一定要熟練使用獲取資料夾路徑以及路徑的拼接
什麼是資料持久化 : 資料的永久儲存
為什麼要做資料持久化:儲存在記憶體中的資料,程式關閉,記憶體釋放,資料丟失。這種資料是臨時的。
資料持久化的本質:資料儲存成檔案,儲存到程式的沙盒裡
1.每個應用程式位於檔案系統的嚴格限制部分
2.每個應用程式只能為該程式建立的檔案系統中讀取檔案
3.每個應用程式在ios系統中內都放在了統一的資料夾目錄下
4.沙盒的本質就是乙個資料夾,名字是隨機分配的
本質上就是乙個資料夾。沙盒是ios平台,針對每一款安裝的應用在本地生成的檔案。名字隨機產生,應用之間不能相互訪問對方內的檔案內容
documents:儲存儲存資料持久化的檔案,想長久存放的資料在該資料夾下,但該資料夾不能存放過多內容,否則,上線會被拒
1.列印沙盒路徑
nsstring *homepath = nshomedirectory();
nslog(@」%@」,homepath);
//2.應用程式的包路徑
nsstring *bundlepath = [[nsbundle mainbundle] bundlepath];
nslog(@"%@",bundlepath);
//3.獲取沙盒資料夾下documents資料夾的路徑
01)nsdocumentdirectory :我們要查詢的資料夾
02引數:查詢的範圍 nsuserdomainmask 在使用者域中查詢
03引數:要不要顯示詳細的路徑
/*該方法之前是os x平台下的,對應os x平台下的,可以獲取的是所有使用者的資料夾路徑,而對於ios平台,使用者只有乙個,所以取得路徑只有乙個*/
//4.獲取沙盒資料夾下library資料夾路徑
nsstring * library = [nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes)lastobject];
//5.獲取沙盒資料夾下tmp資料夾路徑
nsstring *tmppath = nstemporarydirectory();//專門的路徑
//6.獲取沙盒資料夾下library資料夾下caches資料夾路徑
nsstring *cachespath = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes);
//獲取包中資源的路徑
[[nsbundle mainbundle] pathforresource:@"資源名" oftype:@"資源型別"];
資料持久化方式之一
寫入檔案 只支援簡單物件:nsstring nsarray nsdictionary nsdata及其子類
陣列中的元素也必須是對應的型別
//字串的寫入
//1.獲取檔案路徑
nsstring *stringfile = [self stringfilepath];
//寫入檔案
bool issuccess = [self.tf1.text writetofile:stringfile atomically:yes encoding:nsutf8stringencoding error:nil];
nslog(@」%@」,issuccess ?@」寫入成功」:@」失敗」);
//字串的讀取
//獲取檔案路徑
nsstring *strpath = [self stringfilepath];
//根據路徑讀取內容
nsstring *string = [nsstring stringwithcontentsoffile:strpath encoding:nsutf8stringencoding error:nil];
self.tf2.text = string;
這裡的init代表初始化
例如讀取陣列就為 [nsarray arraywithcontentsoffile:arrpath];
//arrpath 為陣列存放路徑
什麼是複雜物件
1.在foundation 框架下不存在的資料類
2.無法在程式內通過writetofile型別的方法寫入到檔案內
3.複雜物件至少包含乙個例項物件
資料持久化方式之一:
:針對於複雜物件 將自定義類的物件轉成nsdata 再writetofile:寫入檔案
歸檔的物件必須服從nscoding協議 實現對應協議的方法
//將mod物件轉化為nsdata物件
nsmutabledata *data = [nsmutabledata data];
//1.建立歸檔工具
nskeyedarchiver *archiver = [[nskeyedarchiver alloc] initforwritingwithmutabledata:data];
//2.歸檔
[archiver encodeobject:mod forkey:@」ll」];
//3.結束歸檔
[archiver finishencoding];
寫入檔案
[data writetofile:[self filepath] atomically:yes];
//反歸檔
- (ibaction)unachieve:(id)sender
//建立資料夾 caches –> download
- (ibaction)creatfile:(id)sender else
} //刪除
- (ibaction)delectfile:(id)sender
iOS中的UI資料持久化,沙盒
rootviewcontroller.m ui18 01資料持久化 created by rickie lambert on 15 12 7.import rootviewcontroller.h inte ce rootviewcontroller end implementation rootv...
資料持久化 之 沙盒機制 sandBox
void viewdidload else 寫個陣列到本地 nsmutablearray array nsmutablearray arraywithobjects 王金波 王浩 張天 早日天 nil bool result1 array writetofile stuarraypath atomi...
iOS沙盒 一 沙盒機制
1 ios沙盒機制 ios應用程式只能在為該改程式建立的檔案系統中讀取檔案,不可以去其它地方訪問,此區域被成為沙盒,所以所有的非 檔案都要儲存在此,例如影象,圖示,聲音,映像,屬性列表,文字檔案等。1.1 每個應用程式都有自己的儲存空間 1.2 應用程式不能翻過自己的圍牆去訪問別的儲存空間的內容 1...