【发布时间】:2015-01-12 15:45:26
【问题描述】:
我正在尝试在我的应用程序中加载(和上传)图像(通过图片路径)。 这在我的模拟器中工作。一切正常。仅当我尝试在 iphone 本身上执行此操作时,它才会起作用,并且我只看到空的 UIImageviews。
路径的加载方式与模拟器中的相同。并且起源于:
PHImageManager.defaultManager().requestImageDataForAsset(asset, options: nil)
{
imageData,dataUTI,orientation,info in
cell.setString(info["PHImageFileSandboxExtensionTokenKey"] as String,name:dataUTI as String)
}
并且PHImageFileSandboxExtentionTokenKey在加载图片时被拆分为数据和url。 这导致模拟器为:
/Users/Twizzler/Library/Developer/CoreSimulator/Devices/3E671415-8B83-44DA-870F-19BF2BC11F8F/data/Containers/Data/Application/8872109F-3784-40EB-BEB6-4E9FDABE013D/Documents/1613945_10200645161051698_4122753901212984922_n.jpg
在 iphone 中为:
/private/var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG
我像这样加载图像:
let image = UIImage(named: "/private/var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG")
cell.imageView.image = image
在这种情况下,我将图像 url 硬编码(这是最终应用程序中的图像数组)
我没有收到错误或堆栈跟踪。放置断点时,我看到图像信息的方式与模拟器相同
正如答案所建议的那样,我现在尝试按如下方式加载它们:
let image = UIImage(contentsOfFile: "/private/var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG")
cell.imageView.image = image
这不起作用,我无法上传文件
【问题讨论】:
-
应用是沙盒的。在真实(未越狱)设备上,应用无法直接访问其沙盒之外的任何文件。
-
路径
/private/var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG不可直接访问。它看起来像一个ALAssetsURL。您应该始终在您的应用沙箱中复制和使用图像。 -
好吧,我如何在我的沙箱中获取图像?(我知道这是一个愚蠢的问题。但我只能找到那些使用我现在拥有它的方式)
-
我尝试使用的文件不是特定于应用程序的
标签: ios iphone uiimageview uiimage