[已解决][iOS开发]iOS8下文件读取的问题

seedante 发布于 2014年12月28日 | 更新于 2014年12月28日
无人欣赏。

我将一些图像写入到 Document 目录作为缓存,结果发现无法读取。比如,某个图像文件的路径如下: /var/mobile/Containers/Data/Application/7F2BA3EA-B7DF-427B-99AF-FBA1457B0826/Documents/31BB7F17-4E39-4E23-8A9B-FB35DE4D2A82.jpg 没有发生使用[UIImage imageNamed:]的错误,使用了正确的方法,[UIImage imageWithContentsOfFile:(NSString *)path]。我Google 了一番,没发现正确的解答,搜索出来的都是采用了前面的错误方法。有人遇到过这个问题吗?


此问题的解答

这个问题在 stackoverflow 得到了好心人的解答,其实很简单。在这里搬运一下。我在这里提的这个问题没有说清楚情况,我以为我把必要的信息都说明了。还是漏掉了关键的信息,背景。背景是,我使用的是 CoreData来存储信息,我使用NSSearchPathForDirectoriesInDomains函数来获取 app 的目录路径,再加入文件名,把这类的绝对地址:/var/mobile/Containers/Data/Application/7F2BA3EA-B7DF-427B-99AF-FBA1457B0826/Documents/31BB7F17-4E39-4E23-8A9B-FB35DE4D2A82.jpg硬编码写入了数据库,在其他地方再读取出来,但是,从 iOS8开始,NSSearchPathForDirectoriesInDomains得到的目录信息,比如这个7F2BA3EA-B7DF-427B-99AF-FBA1457B0826,每次运行 app 都会变化,所以造成了我第一次运行正常后面就出错的情况。抱歉我漏掉了关键信息。

共4条回复
tinyfool 回复于 2014年12月28日

无法读取,有没有错误信息?

seedante 回复于 2014年12月28日

1楼 @tinyfool 我是今天偶然发现从文件读取的 UIImage 对象为空,使用 NSFileManager 的fileExistsAtPath检测返回 NO。

seedante 回复于 2014年12月28日

1楼 @tinyfool 我在 Mac 上使用 iExplorer连接设备,可以看到这些文件都在 app 的 Document目录躺着。

seedante 回复于 2014年12月28日

1楼 @tinyfool 还有个奇怪的问题,我这个 app 是将照片中的人脸检测出来将这部分图像切割出来写到文件中,在第一次运行的时候切换到其他界面会去读取这些文件,这个时候读取正常,使用 NSFileManager 的fileExistsAtPath检测返回 YES。在停止再次运行时,就发生我提到的问题了。

登录 或者 注册