美文网首页技术文iOS开发拾碎
关于每次重新运行app,保存文件的沙盒路径就失效的问题

关于每次重新运行app,保存文件的沙盒路径就失效的问题

作者: 王加水 | 来源:发表于2018-09-19 15:32 被阅读0次
1.发现问题

简单举个例子,保存一个UIImage进沙盒/Documents目录下

UIImage * wtImg = ...;
NSString *path_header = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSData *imgData=UIImagePNGRepresentation(wtImg);
NSString *path_wtImg = [path_header stringByAppendingString:@"/wtImg.png"];
[imgData writeToFile:path_wtImg atomically:YES];

然后顺手把这个图片的完整路径path_wtImg给保存起来了,方便其他地方读取使用.
DuangDuangDuang~~~~
问题就出现了,本次app不杀死没啥事,图片顺利读取,可一旦app进程杀死了,再读取就读取不到了.

2.查明原因

根据地址去寻址找东西,东西不见了,那必然是地址和东西没对应上,先去找下地址对应文件是不是还在.果然.按照原完整路径去寻址,文件夹不存在,有问题看log,通过打印发现两次运行app的沙盒路径不一致,不一致的地方在Application文件夹下

/Application/22F01795-4B87-4592-B5EF-E084BEC8256B/Documents/
/Application/A529F060-40BD-4A0B-9E59-04A83321BEF7/Documents/

那就是系统的问题咯,翻看文档发现在iOS8前,路径不会变,从iOS8,Xcode6之后, 每次运行后沙盒的路径都会变化,生成新的一个路径,原路径文件夹内容被替换至新路径下,原文件夹对应就找不到了,应该是为了安全每次运行都给/Application下文件夹重名

3.解决问题

知道这个就好办了,保存文件时值存文件名好了,至于读取时候完整地址重新拼接

NSString *path_header = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path_wtImg = [path_header stringByAppendingString:@"/wtImg.png"];
UIImage * partImg = [UIImage imageWithContentsOfFile:path_wtImg];

搞定. 欢迎大家指正

相关文章

  • 关于每次重新运行app,保存文件的沙盒路径就失效的问题

    1.发现问题 简单举个例子,保存一个UIImage进沙盒/Documents目录下 然后顺手把这个图片的完整路径p...

  • iOS 每次重新运行 App,保存文件的沙盒路径失效

    概述 项目中有录音,保存到沙盒中,但是每次重启 App 或者重新安装 App 后,路径失效,按照上次的路径不能够找...

  • App 沙盒

    从 iOS8 以后,每次App重新运行后,沙盒路径都会变化。 Documents 目录 保存应用运行时生成的需要持...

  • NSUserDefaults

    NSUserDefaults是将数据保存在一个plist格式的文件中. 此plist文件路径为APP沙盒文件夹下/...

  • iOS 沙盒路径大坑

    在每次启动APP的时候, 下面这两个方式获得的沙盒路径, 都会不同 注意: 再数据库中保存上次文件的地址的时候千万...

  • 浅谈iOS的文件操作

    一、沙盒路径 ** 沙盒主路径**:是程序运行期间系统会生成一个专属的沙盒路径,应用程序在使用期间非代码的文件都存...

  • 沙盒缓存

    沙盒介绍 1. 查找沙盒路径 2. 沙盒目录 保存由应用程序产生的文件或数据。例如:游戏进度、涂鸦软件的绘图目...

  • 关于沙盒目录动态变化

    在iOS8之后,苹果对应用的沙盒目录进行了修改,将每次打开App的沙盒重新生成,并且将上一次的沙盒文件移到新生成的...

  • ios保存图片到本地沙盒和读取

    保存到沙盒只要先把沙盒路径写好,直接存入就行了 /*保存到沙盒 UIImage * imgsave =self.i...

  • iOS录音开发

    一,概述 AVAudioRecorder录音 url:保存录音文件的沙盒路径 setting:录音格式设置 AVS...

网友评论

    本文标题:关于每次重新运行app,保存文件的沙盒路径就失效的问题

    本文链接:https://www.haomeiwen.com/subject/eusinftx.html