資料持久化 資料儲存到本地

2021-07-04 17:46:19 字數 2755 閱讀 4593

蘋果手機為了保證自己的資料上的絕對安全.設計了沙盒檔案,每乙個應用程式都配備了自己的沙盒檔案,每一次執行,資料夾的名字就會變成乙個沒有任何規律的字串,

第乙個引數:當前要前往哪乙個資料夾,前往 documents 檔案用 nsdocumentdirectory,64行那個,還可以前往caches資料夾,對應68行;

第二個引數:訪問的資料夾型別,指定訪問是使用者資料夾

第三個引數:絕對路徑(yes),相對路徑(no);絕對路徑是給系統來使用的,系統可以根據當期那的路徑找到資料夾,我們在操作檔案的時候都是在用絕對路徑,

相對路徑自會把要前往的資料夾顯示出來,其他部分是~,告訴程式設計師要去那個檔案

nsaray *sandbox  =nssearchpathfordirectoriesindomains(nscachesdirestory,nsuserdomainmask,yes);
把簡單物件寫入到本地,簡單物件指定是nsstring,nsarray等

1.先通過陣列獲取沙盒路徑

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

//從陣列中獲取沙盒路徑

nsstring *sandboxpath = sandbox[0];

//給要寫入的檔案拼接乙個路徑,拼接的方式有兩種

或者兩者的區別是第一種的加 / 第二種不用

2.把字串寫入到本地

nsstring *str = @"過道小高哈哈哈";

//把字串寫入到本地 第乙個引數是檔案要儲存的路徑,第二個是檔案進行保護 yes 第三個是檔案的錯誤資訊

[str writetofile:documentpath atomically:yes encoding:nsutf8stringencoding error:nil];

如果路徑下有對應檔案,則會把原來問價覆蓋,如果沒有則是建立乙個新的檔案;

把沙盒檔案再讀取出來

nsstring *tempstr = [nsstring stringwithcontensoffile:document encoding:nsutf8stringencoding error:nil];
同樣把陣列和字典寫入到本地方法一樣,姿勢在讀取的時候得用相同型別的讀取

複雜物件寫入到本地,主要指我們自己建立的物件寫入到本地,也叫歸檔和反歸檔操作.

//歸檔操作

//之前定義乙個student類並建立物件

student *stu = [student stuentwithname:@"高高姐" ***:@"未知" age:88 hobby:@"奇哥"];

//1.通過陣列沙盒

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

//2.用字串接受沙盒路徑

nsstring *sandboxpath = sandbox[0];

//3.接受資料夾路徑,這個檔案的副檔名時任意

//4.對物件進行歸檔操作

//第乙個引數:要實施歸檔的物件

//第二個引數:路徑

[nskeyedarchiver archiverrootobject:stu tofile:documentpath];

//反歸檔操作

student *newstudent [nskeyedunarchiver unarchiverobjectwithfile:document];

在反歸檔的時候接受者得和我們找到的物件的型別相同

總結:資料持久化的步驟

1.指定前往的資料夾

2.用字串接收路徑

3.拼接檔案路徑

4.寫入本地或者歸檔操作

如果要是複雜物件歸檔,要簽訂nscoding方法,並且實現兩個協議方法,放在陣列裡的複雜物件歸檔也要簽訂協議

當我們想對資料夾進行操作的時候,得通過資料夾管理者 nsfilemanager

//通過檔案管理者對資料夾進行操作

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

nsstring *sandboxpath = sandbox[0];

//建立乙個檔案管理者

nsfilemanager *manager = [nsfilemanger defaultmanager];

//給要建立的資料夾拼接乙個路徑

//資料夾不需要副檔名

//通過manager進行建立

[manager createdirectoryatpahth:filepath withintermediatedirectories:yes attributes:nil error:nil];

//向新建立的資料夾洗乙個字串

nsstring *str = @"asdfasf";

[str writetofile:strpath atomically:yes encoding:nsutf8stringencoding error:nil];

//移除資料夾

[manager removeitematpath:filepath error:nil];

把資料儲存到本地

student.h import inte ce student nsobject property nonatomic,copy nsstring name property nonatomic,copy nsstring property nonatomic,assign nsinteger a...

IOS 本地儲存 資料持久化

沙盒 其實對於每乙個應用程式,都有唯一的乙個本地檔案與之對應,名字由系統隨機生成.這個檔案就是沙盒 沙盒機制 沙盒機制其實就是,對每乙個應用程式的資源起到乙個保護作用,當前程式不允許訪問其他程式的資源,其他程式也不允許訪問當前程式的資源.對於每乙個 應用程式的沙盒檔案中都包含以下檔案 1.docum...

ajax將後端資料儲存到本地

在前後端分離中,如何辨別使用者和判斷使用者是否登入需要token或者cookie的驗證來判斷使用者的時效性,將後端返回的標識資料儲存到本地,每次請求後端都攜帶該資料以此來分別使用者 ajax 重點必須為乙個變數如 data contenttype success function data if d...