dataWithContentOfFile返回nil

时间:2014-12-10 19:13:35

标签: ios ios7 nsdata nsfilemanager

我使用dataWithContentsOfFile来读取数据但是当我关闭应用并返回时它会返回nil。奇怪的是当我尝试在同一次运行中访问我捕获图像并将其保存在Documents或tmp文件夹中时,我确实得到了图像数据。但是,当我关闭应用程序时,返回并读取数据,它返回nil。

我已尝试使用dataWithContentsOfFile:options:error:,但它给出了我这样的错误:

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x14d6fb50 {NSFilePath=/var/mobile/Applications/495A5193-B8C2-4FE8-A745-7BA20221022A/Documents/ProjectName_Area_83554355-FC14-4B01-B53C-C6143633B8F5, NSUnderlyingError=0x14d6add0 "The operation couldn’t be completed. No such file or directory"}

此外,如果我访问appdata文件夹,则图像存在于上述路径中。

我猜这可能是因为iOS8 sdk。但是,在目前的情况下,我正在开发iOS8.1 sdk并在iOS7.1上运行它。

任何需要帮助的交叉问题都值得赞赏。欢呼声。

修改

当我转到错误提到的路径并尝试从POSTMAN(直接从路径)上传文件时,它会给我一个"无效的文件类型"错误。所以,我猜文件是存在的,但有些方法,我的代码无法读取它。

1 个答案:

答案 0 :(得分:1)

问题在于文档路径,即在每次运行时,iOS 7及更高版本每次都会创建一条新路径。这是一个例子:

您尝试访问的路径将是这样的:

var/../SE33JI1-9D8GD9F-9DG34J5HJ-LK345DF8DS/YOUR_APP/DOCUMENTS/../an_example_name.png

所以这里最重要的事情是SE33JI1-9D8GD9F-9DG34J5HJ-LK345DF8DS'是图像路径中应用名称前的标识符。每次运行应用时,由于应用内容的安全性,iOS会分配一个新值来代替此标识符。 iCloud的新增功能可能是。

因此,解决方案是在每次应用运行时获取文档路径,而不是保存图像目录的完整路径。