您的位置:首页 > 移动开发 > IOS开发

iOS 8 之后的动态沙盒路径

2016-05-06 16:32 281 查看
在iOS8之前,我们获取到沙盒中的document、cache、tmp之后,下一次模拟器或真机无论重启多少次,这具体的路径是固定的,可是iOS8 之后,你要是在按原来的路径去找你想要的东西,我想它会把你坑的很惨.下面我就来说说自己的此次爬坑总结;

1>//获取沙盒路径

NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentPath = [pathlastObject];

//Users/ZZ_running/Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/176DA32A-E007-42F5-8716-3BBD80FFAB4F/Library/Documents;

2>在iOS8之后,苹果可能考虑到安全因素,应用每一次重启,沙盒路径都动态的发生了变化。

iOS8中第一次启动时的路径:

///Users/ZZ_running//Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/D73211C2-497C-4C92-828C-584955C23BCB/Library/Documents

iOS8中第二次启动时的路径:

///Users/ZZ_running//Library/Developer/CoreSimulator/Devices/B9F35720-6386-445A-A0DA-0D911BFA64C3/data/Containers/Data/Application/2B080462-8330-440E-AC26-B9B15E065110/Library/Documents

从下划线的部分可以明显看出,两次运行得到的沙盒路径会发生改变,虽然iOS8之后,沙盒的路径发生了变化,但是并不代表你原来沙盒路径中的数据发生了变化;同时,也并不代表路径会越来越多.你一定有所顾虑了吧,[b]下一次重启后路径变化了,那我们的数据/文件去哪儿呢?[/b]

这个问题,你也完全没必要去担心,苹果是不会坑你的,他会帮你处理;

[b]1>苹果会把你上一个路径中的数据转移到你新的路径中。

[/b]

2>你上一个路径也会被苹果毫无保留的删除,只保留最新的路径。

//获取沙盒路径后,你一定要注意,不要把沙盒路径写入你要保存的地方,比如数据库,如果你把documentPath路径写入数据库,这样你会很惨的,只要用每次运行程序后生成的

NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentPath = [pathlastObject];发生了改变,你数据库里的路径就会消失,你就无法找到你想要的数据,你只需要将你的文件名:比如像a.jpg,你想拿到你存进去的数据,就需要让心生成的documentPath再拼上你自己的文件名比如 你的 a.jpg,这样不管document路径怎么变,你都可以找到你的文件;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: