iOS中的UI資料持久化,沙盒

2021-07-08 16:48:28 字數 4007 閱讀 2256

////  rootviewcontroller.m

//  ui18_01資料持久化 //

//  created by rickie_lambert on 15/12/7.

//#import "rootviewcontroller.h"

@inte***ce

rootviewcontroller()

@end

@implementation rootviewcontroller

- (void)viewdidload {

[super

viewdidload];

// do any additional setup after loading the view.

self

.view.backgroundcolor= [uicolor

whitecolor];

//ios沙盒機制:每個應用程式都有乙個沙盒,而且只允許當前應用程式進行訪問。

//沙盒的本質:是乙個資料夾。沙盒:sandbox /*

discussion

for more information on file-system utilities, see low-level file management programming topics.討論

在ios中,主目錄是應用程式沙盒目錄。在作業系統中,它是應用程式的「目錄」或當前使用者的主目錄(如果應用程式不在乙個)。

有關檔案系統實用程式的更多資訊,請參見低級別檔案管理程式設計主題。

*/nsstring *path = nshomedirectory();

nslog

//沙河內的檔案結構:

//1、documents:主要用來儲存使用者資料,或者需要同步上傳itunes或者icloud的資料。

//2、library:

//caches:用來儲存快取檔案

//preferences:儲存偏好設定檔案

//3、tmp:主要用來儲存臨時檔案特點:系統會不定期清理該資料夾

#pragma mark 第一步、

//找到當前沙盒內某個資料夾

/**

*  引數說明 *

*  @param nsdocumentdirectory 1、指定的資料夾

*  @param nsuserdomainmask    2、當前沙盒的主目錄

*  @param

yes                 3、將當前路徑是否以「~」展開,通常都為yes;該引數的作用是否獲得相對路徑;相對路徑只能在當前資料夾內才能找到某個資料夾或檔案**/

nsstring

*documentpath = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask,

yes).

lastobject;

nslog(@"

===資料夾路徑:

%@", documentpath);

#pragma mark 第二步、

#pragma mark 第三步、寫入沙盒檔案

//在檔案內寫內容

//    nsstring *string = @"這是寫入沙盒內的第一句話";

#pragma mark 第四步、再次在這個檔案中寫入內容,但不覆蓋之前已經寫過的內容,就需要用萬能的拼接方法(stringwithformat:)

/**********************        注釋         **********************/

nsstring *string2 = @"

今天真高興

";nsstring

*perstring = [

nsstring

stringwithcontentsoffile:firstfile encoding:nsutf8stringencodingerror:

nil];

nsstring *laststring = [nsstring

stringwithformat:@"%@

,%@===", perstring, string2];

/**********************        注釋         **********************/

#pragma mark 第五步:

#warning 注意:如果往檔案中寫入資料,那麼資料會將檔案內的原資料覆蓋掉。

//    [string writetofile:firstfile atomically:yes encoding:nsutf8stringencoding error:nil];

//將字串物件寫入沙盒檔案

#pragma mark atomically 原子性

限制多執行緒下訪問檔案的安全性

//這裡前面的bool result 可以不要

bool

result = [laststring writetofile:firstfile atomically:

yesencoding:nsutf8stringencodingerror:

nil];

#pragma mark 第六步:

//從沙盒內的檔案讀取內容

nsstring

*readstring = [

nsstring

stringwithcontentsoffile:firstfile encoding:nsutf8stringencodingerror:

nil];

//列印寫入firstfile(即這個first.txt檔案中的內容)

nslog(@"

:%@", readstring);

/**********************        往caches資料夾下寫入字串         **********************/

#warning 注意:檔案路徑的第二種拼接方法,

//第一步:建立資料夾路徑cachespath

nsstring

*cachespath = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask,

yes).

lastobject;

//第二步:在這個資料夾路徑下,建立乙個html檔案

//第三步:在這個html檔案中寫入內容漢字會顯示亂碼,英文正常顯示

nsstring *secondstring = @"

週六約嗎

, you are right";

//第四步:將要寫入的內容新增到檔案中

[secondstring writetofile:filepath atomically:

yesencoding:nsutf8stringencodingerror:

nil];

/**********************        陣列的讀寫         **********************/

//第一步:

nsstring

*temppath = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask,

yes).

lastobject;

//第二步:

//第三步:

nsarray

*array =

@[@"小張", @"小王", @"小李", @"小狗", @"小明"];

//第四步:

bool resultarray = [array writetofile:tempfile atomically:yes];

//第五步:

if (resultarray) {

nsarray *arr = [nsarray

arraywithcontentsoffile:tempfile];

nslog(@"

陣列:%@

,這是檔案路徑

iOS 沙盒 資料持久化

注意在這個筆記裡有部分路徑為方法,需要自己定義,在這裡一定要熟練使用獲取資料夾路徑以及路徑的拼接 什麼是資料持久化 資料的永久儲存 為什麼要做資料持久化 儲存在記憶體中的資料,程式關閉,記憶體釋放,資料丟失。這種資料是臨時的。資料持久化的本質 資料儲存成檔案,儲存到程式的沙盒裡 1.每個應用程式位於...

資料持久化 之 沙盒機制 sandBox

void viewdidload else 寫個陣列到本地 nsmutablearray array nsmutablearray arraywithobjects 王金波 王浩 張天 早日天 nil bool result1 array writetofile stuarraypath atomi...

iOS中的沙盒路徑

iphone沙箱模型的有四個資料夾,分別是什麼,永久資料儲存一般放在什麼位置,得到模擬器的路徑的簡單方式是什麼.nshomedirectory 手動儲存的檔案在documents檔案裡 nsuserdefaults儲存的檔案在tmp資料夾裡 1 documents 目錄 您應該將所有 de應用程式資...