文件读取无法在设备中访问,但在模拟器上

时间:2014-12-23 12:37:27

标签: ios path afnetworking

我使用afnetworking框架下载pdf文件,然后将文件保存在此路径上。

NSURL *documentsDirectoryURL = [NSBundle.mainBundle.resourceURL URLByAppendingPathComponent:@"file.pdf"];

当我尝试使用模拟器访问该文件时。它工作正常。但什么时候在真实设备上访问。

File at /var/mobile/Applications/40F3BDE0-F4B1-4C85-A32C-FEB08450646A/appname.app/file.pdf does not exist.

我认为有些沙盒问题。但如何摆脱这个问题。请帮忙。 提前致谢

1 个答案:

答案 0 :(得分:1)

App的捆绑包是只读的,您无法将文件保存到捆绑包中。相反,您可以将其保存在应用Documents目录中。

- (NSURL *)applicationDocumentsDirectory {
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory 
         inDomains:NSUserDomainMask] lastObject];
}


NSString *path = [[self applicationDocumentsDirectory].path 
                       stringByAppendingPathComponent:@"fileName.pdf"];

修改
Documents目录中的所有文件都是可共享的,这意味着其他应用程序可以访问它。因此,如果您放置了用户无法查看的任何数据,请不要将其放在文档中,而是使用Library文件夹。详细了解here