iOS 沙盒 資料持久化

2021-07-08 18:52:59 字數 2949 閱讀 9927

注意在這個筆記裡有部分路徑為方法,需要自己定義,在這裡一定要熟練使用獲取資料夾路徑以及路徑的拼接

什麼是資料持久化 : 資料的永久儲存

為什麼要做資料持久化:儲存在記憶體中的資料,程式關閉,記憶體釋放,資料丟失。這種資料是臨時的。

資料持久化的本質:資料儲存成檔案,儲存到程式的沙盒裡

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...