swift - 无法将表达式的类型 '(@!value UIImage?) -> $T3' 转换为类型 'UIImage?'

标签 swift uiimage

这段代码:

var uiiv = UIImageView()
let nsurl = NSURL(string: "http://...")
var err: NSError?
let nsd: NSData = NSData(contentsOfURL: nsurl, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!
var img = UIImage(data: nsd)
uiiv.image(img)

产生这个错误:

Cannot convert the expression's type '(@!value UIImage?) -> $T3' to type 'UIImage?'

任何人都可以向我解释如何修复此错误,以及错误的实际含义,这对我将来了解 $T3@ 之类的东西会有帮助!value 表示。

最佳答案

您正在使用的 NSData 初始化器需要一个非可选的 NSURL,但是这个初始化器 NSURL(string: "http://...") 返回一个可选的。您可以使用可选绑定(bind)或强制展开 - 在后一种情况下:

let nsurl = NSURL(string: "http://...")!

let nsd: NSData = NSData(contentsOfURL: nsurl!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!

此外,NSData 初始值设定项本身返回一个可选值,我看到您使用了强制解包 - 在这种情况下我会使用可选绑定(bind),因为 nsd 可以是无:

var uiiv = UIImageView()
let nsurl = NSURL(string: "http://...")!

var err: NSError?
let nsd = NSData(contentsOfURL: nsurl, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)

if let nsd = nsd {
    var img = UIImage(data: nsd)
    uiiv.image = img
}

至于错误信息:

Cannot convert the expression's type '(@!value UIImage?) -> $T3' to type 'UIImage?'

那是因为您将属性当作方法来使用。

imageUIImage? 类型,但您将其用作获取 UIImage? 并返回未指定类型的函数 T3

通过正确修复代码,错误当然会消失:

uiiv.image = img

关于swift - 无法将表达式的类型 '(@!value UIImage?) -> $T3' 转换为类型 'UIImage?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27146087/

相关文章:

swift - iOS Geofence 开始监控时进入区域内如何处理

ios - 如何以编程方式将图像保存在自定义位置?

iphone - 将 UIImage 以 PNG 格式保存到 iPhone 上的相册

ios - 如何使用 swift 设置条形按钮的图像?

swift - 获取 iOS 8 UIImage 方向属性

ios - 带有 AFNetworking 的 UIImage

ios - 显示等待 View ,直到正在进行图像过滤

ios - 在 Google map 中保留用户位置中心 - Swift

ios - 为什么我的 UIView de 在删除观察者后第一次没有初始化,但之后却初始化了?

ios - 方法 'application:openURL:options:'未被调用