我正在创建一个tableView
,其中包含用户选择的图库中的图片,然后我选择imagePath
将其放在UIImageView
上。
要在UIImageView
中设置iOS图库图片,
我正在使用:
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];
此代码适用于模拟器。
我在真实设备上进行了测试,发现在执行上述代码后UIImageView
为空。
有没有办法使用真实设备实现这一目标?
答案 0 :(得分:4)
由于应用沙盒,您的应用无权查看/var/mobile/Media
(或/var/
的任何子目录)的内容。请考虑以下代码:
do {
let fileList = try FileManager.default.contentsOfDirectory(atPath: "/var/mobile/Media/DCIM/")
} catch {
print(error)
}
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"}}
这个例子在Swift中,但是等效的Objective-C代码会有相同的错误。
没有办法解决这个问题(除非您使用以root用户身份运行应用程序的越狱设备)。使用UIImagePickerController
向用户询问图片。