你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS App沙盒模型文件目錄詳解Swift版

iOS App沙盒模型文件目錄詳解Swift版

編輯:IOS開發綜合

本文會比較全面的介紹iOS App沙盒模型的文件夾及其使用場景,以及通過swift取得這些文件夾的方法

iOS 中的沙盒機制介紹

iOS 中的沙盒機制(SandBox)是一種安全體系。
每個 iOS 應用程序都有一個單獨的文件系統(存儲空間),而且只能在對應的文件系統中進行操作,此區域被稱為沙盒。所有的非代碼文件都要保存在此,例如屬性文件 plist、文本文件、圖像、圖標、媒體資源等。

iPhone沙箱模型的四個文件夾介紹和功能

 

1、Documents 目錄:您應該將所有de應用程序數據文件寫入到這個目錄下。這個目錄用於存儲用戶數據或其它應該定期備份的信息。用戶自己保存的文件在documents文件裡

2、AppName.app 目錄:這是應用程序的程序包目錄,包含應用程序的本身。由於應用程序必須經過簽名,所以您在運行時不能對這個目錄中的內容進行修改,否則可能會使應用程序無法啟動。

3、Library 目錄:這個目錄下有兩個子目錄:Caches 和 Preferences
Preferences 目錄:包含應用程序的偏好設置文件。您不應該直接創建偏好設置文件,而是應該使用NSUserDefaults類來取得和設置應用程序的偏好.
Caches 目錄:用於存放應用程序專用的支持文件,保存應用程序再次啟動過程中需要的信息。

4、tmp 目錄:這個目錄用於存放臨時文件,保存應用程序再次啟動過程中不需要的信息。

 

補充1:對於上述描述可以這樣舉例理解,一個記事本應用,用戶寫的東西需要保存起來,這些東西是用戶自行生成的,則需要放在 Documents 目錄裡。一個新聞應用,如果需要從服務器下載東西展示給用戶看,下載的東西就放在 Library/Caches 目錄裡。蘋果審核對這個要求很嚴格,主要原因是 iCloud 的同步問題。

補充2:如果想知道真機或者模擬器 App 沙盒路徑,可通過在項目中執行下述代碼打印獲取:


獲取這些目錄路徑的方法

1,獲取Home目錄路徑的函數:
let homeDir = NSHomeDirectory()
2,獲取Documents目錄路徑的方法:

let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.NSDocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

let documentPath = paths[0]


3,獲取Caches目錄路徑的方法:

letpaths =NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory,NSSearchPathDomainMask.UserDomainMask,true)

let cachePath= paths[0]


4,獲取tmp目錄路徑的方法:
let tmpDir = NSTemporaryDirectory();
5,獲取應用程序程序包中資源文件路徑的方法:

程序包(NSBundle)
iOS 應用都是通過 bundle 進行封裝的,可以狹隘地將 bundle 理解為上述沙盒中的 AppName.app 文件。在 Finder 中,會把 bundle 當做一個文件顯示從而防止用戶誤操作導致程序文件損壞,但其實內部是一個目錄,包含了圖像、媒體資源、編譯好的代碼、nib 文件等,這個目錄稱為 main bundle。
Cocoa 提供了 NSBundle 類封裝了 bundle 操作。

通過NSBundle可以獲取各種資源文件,注意在Build Phases - Copy Bundle Rresources下面需要有這個資源文件,有些類型的文件不會自動加在這裡

 

let path = NSBundle.mainBundle().pathForResource("20160504182134006", ofType: "pcm")


代碼中的mainBundle類方法用於返回一個代表應用程序包的對象。

 

 

NSFileManager文件管理介紹

使用 FileManager 可以對沙盒中的目錄、文件進行操作。

 

例子:

var fm: NSFileManager = NSFileManager.defaultManager()
if !fm.fileExistsAtPath(self.dataFilePath()) {
//下面是對該文件進行制定路徑的保存
fm.createDirectoryAtPath(self.dataFilePath(), withIntermediateDirectories: true, attributes: nil, error: nil)
//取得一個目錄下得所有文件名
var files: [AnyObject] = fm.subpathsAtPath(self.dataFilePath())
//讀取某個文件
var data: NSData = fm.contentsAtPath(self.dataFilePath())
//或者
var data: NSData = NSData.dataWithContentOfPath(self.dataFilePath())
}

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