你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 簡略控制iOS運用開辟中sandbox沙盒的應用

簡略控制iOS運用開辟中sandbox沙盒的應用

編輯:IOS開發綜合

1、IOS沙盒機制

IOS的運用只能拜訪為該運用創立的區域,弗成拜訪其他區域,運用的其他非代碼文件都存在此目次下,包含圖片,屬性文件plist,bundle,nib文件等,這塊區域稱之為沙盒(sandBox)。

每一個運用都有屬於本身的存儲空間,即沙盒。
運用只能拜訪本身的沙盒,弗成拜訪其他區域。
假如運用須要停止文件操作,則必需將文件寄存在沙盒中,特別是數據庫文件,在電腦上操作時,可以去拜訪,然則假如要裝在真機上可使用,必需將數據庫文件拷貝至沙盒中。
2、翻開沙盒途徑

1、假如不曉得沙盒途徑,可以在本身的運用中打印其途徑。

NSLog(@"沙盒途徑:%@",NSHomeDirectory());


會獲得打印成果*為字母或數字,即為沙盒的途徑

/Users/apple/Library/Application Support/iPhone Simulator/6.1/Applications/******-****-****-****-************

翻開Finder,選擇前去-前去文件夾(或選擇快捷鍵command+shift+G)輸出打印出來的途徑便可

2、翻開Finder,選擇前去並按住option鍵,進入資本庫

201612592225383.png (219×421)

選擇Application Support-iPhone Simulator-選擇模仿器版本,便可看到各個運用的沙盒目次。

201612592251076.jpg (823×432)

選中個中一個目次,便可看到法式的稱號的App文件。

201612592313546.png (820×340)

3、目次構造

沙盒默許情形下有三個目次文件夾documents,Library,tmp及運用的App文件,只可在響應的文件夾中停止操作

documents:普通用來寄存運用中樹立的文件,如數據庫文件,或法式中閱讀到的文件數據。假如停止備份會將此文件夾中的文件包含個中;
Library:存儲運用的默許設置及狀況信息;
Library/cache:用來寄存緩存文件,此文件夾下數據在運用加入時不會刪除。備份時不會包含此文件夾;
tmp:寄存即時穿件的暫時文件
帶圖標的App文件:

選中後顯示包內容,便可看到存儲的圖標,nib文件,屬性列表等

201612592333311.png (409×175)

4、在沙盒中寫文件

在沙盒目次的Documents文件夾下添加一個plist文件,添加圖片等辦法雷同

// 獲得Documents文件夾目次
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
 
// 設定plist的途徑
 [rootPath stringByAppendingPathComponent:@"new.plist"];
 
// 然後在plist中寫入內容
NSString *error;
// 序列化一個值“OK”
id plist = [NSPropertyListSerialization dataFromPropertyList:@"OK" format:NSPropertyListXmlRss/ target=_blank class=infotextkey>XmlFormat_v1_0 errorDescription:&error];
 
if(plist) {
        NSLog(@"No error creating XmlRss/ target=_blank class=infotextkey>Xml data.");
        [plist writeToFile:plistPath atomically:YES];
    }
    else {
        NSLog(@"%@",error);
        [error release];
    }

運轉後在Documents文件夾下將看到一個new.plist文件

201612592352139.png (411×36)

文件中有一個值OK,也可添加數組,字典等相干類型的內容,只需將上文中的“OK”換成一個(id)類型的值便可

201612592407015.png (601×116)

5、拷貝文件到沙盒目次下

上面拷貝一個public.Xml文件至document途徑下,也可拷貝其他文件,只需將文件名和類型對應便可,特別是database文件,必定要拷貝至沙盒能力應用。此文件不克不及是電腦中的文件,必需參加工程的Bundle中

// 獲得Documents途徑
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];
 
    // 設定要拷貝文件的途徑及稱號
    NSString *xmlSandBoxPath = [documentsPath stringByAppendingPathComponent:@"public.xml"];
 
    NSFileManager *fileManager = [NSFileManager defaultManager];
 
    // 斷定文件能否曾經存在
    BOOL isExisting = [fileManager fileExistsAtPath:xmlSandBoxPath];
 
    if (!isExisting) {
 
        // 當地無此文件,則將此文件拷貝到當地目次。
        NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"xml"];
        NSError *err;
        // 將Bundle中的文件拷貝至沙盒目次下
        [fileManager copyItemAtPath:xmlFilePath toPath:xmlSandBoxPath error:&err];
    }

操作以後,Documents途徑下就有這個文件了

201612592428430.png (413×45)

【簡略控制iOS運用開辟中sandbox沙盒的應用】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved