做過iOS開發的親,一定對沙盒不陌生吧?這次在MAC開發中,以為很快就能把文件寫到沙盒里,想不到遇到了一個坑,耗費了半天的時間,在此分享給大家,希望可以讓大家快速繞過這個坑。
1、首先,MAC開發使用沙盒需要去打開沙盒的權限。
如下圖所示,將OFF切換到ON,打開沙盒權限,并勾選項目中需要的功能。
2、和iOS的寫法一樣獲取沙盒路徑,我就以document文件夾路徑為例
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
接下來我們看一下控制臺打印的結果:
我們前往文件夾,看看這個路徑映射到哪里:
①右鍵Finder,點擊前往文件夾
②把控制臺上的路徑copy到輸入框中,點擊前往
③這時,我們可以看到,控制臺打印的路徑是映射到系統的文稿目錄下,顯示這不是我們想要的路徑,我們希望映射到當前應用程序所對應的目錄下。那么問題出在哪里哪?
3、MAC獲取沙盒權限需要簽名狀態
①進到配置中,發現我們的應用程序是沒有簽名的,所以我們加上簽名,這里就不細說了。
②加上簽名后,我們再來看下結果:
③結果看著好像是對的,那我們還是前往文件夾看下:
④這就是我們需要的沙盒路徑,搞定!
后序:MAC應用程序沙盒路徑不管是xcode的程序,還是網上下載的應用程序,如果打開了沙盒權限,都是放在同一個目錄下;而iOS是xcode的程序放在xcode的一個緩存目錄下,真機調試放在手機相對應程序的目錄下,這是區別。
####2017.9.4 補充:
NSUserDefaults寫入的數據存儲在哪里?
沙盒的Library文件夾下的Preferences文件夾下的,以應用程序的bundle id為名的plist文件,里面記錄了所有用NSUserDefaults寫入的數據存儲。