iOS 9读取文件权限

在iOS 9或更高版本中,我无法读取文件。 这种情况下的文件是一个图像文件path。
运用

NSData(contentsOfFile: stringpath, options: NSDataReadingOptions.DataReadingUncached) 

要么

 NSData(contentsOfFile: stringpath) 

操作:
我从path中删除了“file://”,现在它有一个权限问题。

错误域= NSCocoaErrorDomain代码= 257“文件”IMG_0048.JPG“无法打开,因为您没有权限查看它。 UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 100APPLE / IMG_0048.JPG,NSUnderlyingError = 0x13f978f50 {Error Domain = NSPOSIXErrorDomain Code = 1“Operation not permitted”}}

我已经添加了NSAllowArbitraryLoads并将其设置为true。
我试图使用“ NSSearchPathDirectory ”自己查找文件,但path以任何方式不匹配

我遇到了这个错误,因为我试图访问同一个块中的多个文件。 修复工作对我来说是改变代码结构,使每个文件的URL获得,然后读取,然后尝试获取下一个文件的URL。

你最有可能得到这个错误,因为iOS应用程序只能访问其沙箱中的文件。 有关详情,请参阅文件系统上的Apple 文档 。

在您的应用程序中,由于沙盒,您无权访问/var/mobile/Media/DCIM/100APPLE/IMG_0048.JPG文件。

所以,无论你做什么,你都无法用文件path初始化NSDataUIImage 。 但您可以通过/var/mobile/Media/DCIM/100APPLE/xxx.mov访问/var/mobile/Media/DCIM/100APPLE/xxx.mov文件。 在我的应用程序中,我通过照片工具包从图库中提取数据而不是url,并使用数据初始化UIImage

 PHImageManager.default().requestImageData( for: assetObject!, options: options, resultHandler: { data, _, _, _ in if data != nil { self.assetUrl = movieMaker.createMovieFrom(imageData: data!, duration: Int(CXPreparetValue.imageDuration)) } }) 

这个对我有用! 如果您有其他意见,请告诉我。

在我的情况下,文件权限是太限制了,所以我无法读取文件。

在访问它之前向文件添加读写权限解决了这个问题。

 do { // Retrieve any existing attributes var attrs = try FileManager.default.attributesOfItem(atPath: stringpath) let existing = (attrs as NSDictionary).filePosixPermissions() // Set the read+write value in the attributes dict attrs[.posixPermissions] = existing | 0b110000000 // Update attributes try FileManager.default.setAttributes(attrs, ofItemAtPath: stringpath) // Read data from file let data = try Data(contentsOf: URL(fileURLWithPath: stringpath, isDirectory: false), options: .uncached) print("success: \(data.count)") } catch { print(error) }