做过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写入的数据存储。