Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 无法转换表达式';s型&x27;(@!值UIImage?)->$T3和x27;输入';UIImage?&x27;_Swift_Uiimage - Fatal编程技术网

Swift 无法转换表达式';s型&x27;(@!值UIImage?)->$T3和x27;输入';UIImage?&x27;

Swift 无法转换表达式';s型&x27;(@!值UIImage?)->$T3和x27;输入';UIImage?&x27;,swift,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(im

此代码:

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
@这样的东西对我以后会很有帮助!值
表示。

UIImageView
中的图像是一个属性,而不是方法

你可以直接分配给它

uiiv.image = img

您正在使用的
NSData
初始值设定项需要一个非可选的
NSURL
,而不是
uiiv.image(img)

http://...“”返回可选值。您可以使用可选绑定或强制展开-在后一种情况下:

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

此外,
NSData
初始值设定项本身返回一个可选值,我看到您使用了强制展开-在本例中,我将使用可选绑定,因为
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
}

至于错误消息:

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

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

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

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

uiiv.image = img

Xcode坚持要放一个
在NSData的末尾,即使我遵循您的建议,也只需手动删除它-在声明
nsd
变量时还要确保删除类型,并让类型推断完成它的工作:
让nsd=…
好,酷-那么您还可以解释一下
$T3
@!value
mean?这是swift编译器抛出的一条晦涩难懂、毫无意义的错误消息——有一长串无意义的错误消息。我没有解释,但通常在这些情况下,解决方案是简单的,在许多情况下,涉及到选择。实际上,在这种情况下,它给出了一些提示,而不是我在前面的评论中提到的模糊的提示。请参阅更新的答案修复了问题,非常感谢各位。首先解释
$T3
@!value
获取分数。您可能需要更正
@!值
@lvalue
@lvalue
表示可分配变量(即
var
)。您是否建议我更正错误消息?如何更改错误消息,这会给我带来什么好处?这真的是
@!值
?在我的环境(Xcode6.1)中,即
@lvalue
。不是
,但
l
uiiv.image = img