MAC開發--關于MAC獲取沙盒路徑的問題

做過iOS開發的親,一定對沙盒不陌生吧?這次在MAC開發中,以為很快就能把文件寫到沙盒里,想不到遇到了一個坑,耗費了半天的時間,在此分享給大家,希望可以讓大家快速繞過這個坑。

1、首先,MAC開發使用沙盒需要去打開沙盒的權限。

如下圖所示,將OFF切換到ON,打開沙盒權限,并勾選項目中需要的功能。

打開沙盒權限

2、和iOS的寫法一樣獲取沙盒路徑,我就以document文件夾路徑為例

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

接下來我們看一下控制臺打印的結果:


控制臺打印document路徑的結果

我們前往文件夾,看看這個路徑映射到哪里:

①右鍵Finder,點擊前往文件夾

右鍵Finder

②把控制臺上的路徑copy到輸入框中,點擊前往

前往文件夾

③這時,我們可以看到,控制臺打印的路徑是映射到系統的文稿目錄下,顯示這不是我們想要的路徑,我們希望映射到當前應用程序所對應的目錄下。那么問題出在哪里哪?


系統文稿路徑

3、MAC獲取沙盒權限需要簽名狀態

①進到配置中,發現我們的應用程序是沒有簽名的,所以我們加上簽名,這里就不細說了。

加簽名

②加上簽名后,我們再來看下結果:


控制臺打印document路徑的結果

③結果看著好像是對的,那我們還是前往文件夾看下:


沙盒路徑

④這就是我們需要的沙盒路徑,搞定!

后序:MAC應用程序沙盒路徑不管是xcode的程序,還是網上下載的應用程序,如果打開了沙盒權限,都是放在同一個目錄下;而iOS是xcode的程序放在xcode的一個緩存目錄下,真機調試放在手機相對應程序的目錄下,這是區別。


####2017.9.4 補充:

NSUserDefaults寫入的數據存儲在哪里?

沙盒的Library文件夾下的Preferences文件夾下的,以應用程序的bundle id為名的plist文件,里面記錄了所有用NSUserDefaults寫入的數據存儲。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容