博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS沙盒路径变化的说明详解
阅读量:4625 次
发布时间:2019-06-09

本文共 955 字,大约阅读时间需要 3 分钟。

最近用沙盒存储文件的时候发现了一个奇怪的现象,由于业务需要,我会将保存的文件绝对路径保存以便下次读取。

 

于是发现一个找不到的现象,即上一次保存下的绝对路径,再第二次打开app去查找的时候,发现找不到。。。

 

比如:

我第一次保存一个文件,保存路径如下:

/Users/MACBOOK/Library/Developer/CoreSimulator/Devices/42B54721-B3EB-448A-A450-1E11165011A0/data/Containers/Data/Application/5CBBF509-BD9B-4AA9-AA19-A04FC5C791E6/Documents/Picture/11/20160818115808

然后将这个路径保存到一个地方,下次根据这个路径去取文件,然后就回出现我如上描述的问题。

 

原因如下:

iOS8之后,苹果添加的新特性,将每次打开app内的沙盒[唯一编码路径](红框部分)重新生成,并保持上一次的沙盒文件(Documents、Library、tmp)移到新生成的文件内,旧文件删除,就是说,你保存的文件都在,只不过每次打开后,都会有一个新的绝对路径。

 

 


因此,以后存取文件,就要避免我之前的做法,不用记录绝对路径,而用相对路径替代。

 

记录我们的相对路径,拼接上沙盒的根路径即可。

1、相对路径relPath:  /file/1.png

2、获取rootPath

如下:

    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYESfirstObject];

或 

    NSString *rootPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

 

沙盒完整路径 = rootPath + relPath

这样保证没次取路径,都是最新的路径,而避免了用绝对路径带来的错误。

 

最后记住:下次千万不要记录绝对路径。

 

 

enjoy~

 

转载于:https://www.cnblogs.com/yajunLi/p/5784579.html

你可能感兴趣的文章
apicloud UISearchBar 使用方法
查看>>
【spring+websocket的使用】
查看>>
mongo二维数组操作
查看>>
localStorage之本地储存
查看>>
Archlinux 交换左Ctrl和Cap键
查看>>
#openstack故障处理汇总
查看>>
搜索旋转排序数组 II
查看>>
20、docker swarm
查看>>
psp工具软件前景与范围文档
查看>>
day06-三元表达式
查看>>
C# DateTime.Now详细用法
查看>>
Php中"{}"大括号的用法总结(转)
查看>>
JavaScript内存优化
查看>>
BZOJ1059: [ZJOI2007]矩阵游戏(二分图匹配)
查看>>
P3385 【模板】负环
查看>>
URI、URL 和 URN的区别
查看>>
根据表达式序列(前缀、中缀、后缀)构建表达式树
查看>>
mysql性能优化
查看>>
【SqlServer系列】语法定义符号解析
查看>>
Color Length UVA - 1625
查看>>