关于iOS路径变化的解决方案
- 问题描述:
使用沙盒存储文件的时候,我们会保存文件的绝对路劲以便下次读取,但是发现一个现象,我们保存的文件,在第二次打开App去查找的时候,发现找不到了......
- 查找原因:
iOS8之后,苹果添加的新特性,将每次打开app内的沙盒[唯一编码路径](红框部分)重新生成,并保持上一次的沙盒文件(Documents、Library、tmp)移到新生成的文件内,旧文件删除,就是说,你保存的文件都在,只不过每次打开后,都会有一个新的绝对路径。
- 解决方法:
为了以后存取文件,应该避免存储绝对路径,通过分析原因我们很容易找到解决方案,即:保证每次使用类似 NSSearchPathForDirectoriesInDomains 方法去获取Documents文件路径,因为这样获取到到沙盒文件总是你一直使用的那个,里面的文件内容都会一直存在。
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];