无法将类型“[PHAsset]”的值分配给类型“UIImageView!”

Posted

技术标签:

【中文标题】无法将类型“[PHAsset]”的值分配给类型“UIImageView!”【英文标题】:Cannot assign a value of type '[PHAsset]' to type 'UIImageView!' 【发布时间】:2016-04-26 20:52:20 【问题描述】:

无法将“[PHAsset]”的值分配给键入“UIImageView!”

我在这里遇到了问题:

更新问题

    // CONVERT PHASSET TO UIIMAGE
func getAsset(asset: PHAsset) -> UIImage 
    let manager = PHImageManager.defaultManager()
    let option = PHImageRequestOptions()
    var image = UIImage()
    option.synchronous = true
    manager.requestImageForAsset(asset, targetSize: CGSize(width: 100.0, height: 100.0), contentMode: .AspectFit, options: option, resultHandler: (result, info)->Void in
        image = result!
    )
    return image





func doneButtonDidPress(images: [UIImage]) 



    self.imagePickerController.dismissViewControllerAnimated(true, completion: nil)
    var selectedImg = imagePickerController.stack.assets

    getAsset(selectedImg)
    self.SelectImageView.image = UIImage(named: chosenImg)



    

但是我得到了如下图所示的错误

【问题讨论】:

【参考方案1】:

变量 selectedImage 的类型是 PHAsset

变量 self.backgroundImageViewself.SelectImageView 的类型是 UIImageView

这两种类型不匹配,所以 Swift 不允许你进行赋值。

要进行分配,您必须将 PHAsset 转换为 UIImage,然后将此 UIImage 分配给 UIImageView

【讨论】:

@MartinQ 我已经在最后一部分回答了这个问题。 *** 上有多个关于如何执行这些约定的答案 好的,我在这方面已经有一段时间了,我有点卡住了。我是否在按钮功能之外转换它?还是我在按钮功能中转换它。当我在按钮函数之外进行转换,然后在按钮中调用函数时,它说:无法将“UIImage”类型的值转换为预期的参数类型“PHAsset”【参考方案2】:

[PHAsset]PHAsset 对象的数组。要从数组中获取图像,请从您想要的特定索引中获取 PHAsset,然后使用 requestImageForAsset:targetSize:contentMode:options:resultHandler: 从资产中获取图像。

【讨论】:

使用我上面的代码,你能给我一个大致的布局吗? ...我感觉有点失落。谢谢 JAL,有没有可以用代码表达的?我理解你的指示,但我坚持这一点,我没有任何帮助。如果您不绑定,我将非常感谢您的帮助。谢谢

以上是关于无法将类型“[PHAsset]”的值分配给类型“UIImageView!”的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型“类”的值分配给类型“[类]”

无法将“颜色”类型的值分配给“UIColor”类型

无法将类型 [NSObject] 的值分配给类型 NSObject

无法将 CKAsset 类型的值分配给 UIImage 类型

无法将“String”类型的值分配给“MyOrderTableViewCell”类型

PromiseKit 无法将类型 '[Result<TYPE>]' 的值分配给类型 '[TYPE]