UIImage imageWithContentsOfFile:在实际设备上不起作用

CGR*_*CGR 2 objective-c uiimage ios

我正在创建一个tableView,其中包含用户选择的图库中的图像,然后将选定imagePath的图像放置在上UIImageView

要在中设置iOS画廊图片,请UIImageView使用:

NSString *imgPath = @"/var/mobile/Media/DCIM/105APPLE/IMG_5903.JPG";//Hardcoded path just for test, image actually exists on iOS device

self.imgViewContainer.image = [UIImage imageWithContentsOfFile: imgPath];
Run Code Online (Sandbox Code Playgroud)

此代码可在Simulator上使用。

我在真实的设备上进行了测试,发现UIImageView执行上述代码后,该对象为空。

有没有办法使用真实的设备来实现这一目标?

JAL*_*JAL 5

由于应用沙箱,您的应用无权查看/var/mobile/Media(或的任何子目录/var/)的内容。考虑下面的代码:

do {
    let fileList = try FileManager.default.contentsOfDirectory(atPath: "/var/mobile/Media/DCIM/")
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

contentsOfDirectory(atPath:) 使用以下详细信息引发错误:

Error Domain=NSCocoaErrorDomain Code=257 "The file “DCIM” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/var/mobile/Media/DCIM/, NSUserStringVariant=(
    Folder
), NSUnderlyingError=0x170045700 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
Run Code Online (Sandbox Code Playgroud)

该示例在Swift中,但是等效的Objective-C代码将具有相同的错误。

无法解决此问题(除非您使用以root用户身份运行应用程序的越狱设备)。使用UIImagePickerController询问用户的图像。