Swift无法调用' +'使用类型'($ T10,CGFloat)'的参数列表

时间:2015-03-26 21:08:03

标签: swift cgfloat

我是Swift的初学者。

我有这个错误

无法调用' +'使用类型'($ T10,CGFloat)'

的参数列表
func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{


var imageName = key  + "_" + width + "_" + height

return UIImage(named: imageName)!

}

1 个答案:

答案 0 :(得分:5)

错误表明您正在尝试连接字符串和浮点数(或者无论如何不能通过+连接的不同类型)。你可以插入&相反地​​构造字符串:

func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{

    var imageName = "\(key)_\(width)_\(height)"

    return UIImage(named: imageName)!
}

您可以阅读more about this here

在@ Grimxn的评论之后再说几句话......

首先,在调用方法并从帧/边界中获取值时,将widthheight指定为CGFloat可能很方便,但它很可能会在未来(例如,想象一个几乎像120.001一样的完美宽度的框架 - 或者例如从某个部门出来的任何疯狂的数字)。因此,我认为Int在这种情况下会更好,以便在尺寸/文件名之间保持(相对更安全)的映射。

PS。另外,let可能优于var,因为imageName刚刚构建并返回而未经进一步修改,最后UIImage?作为返回类型会强制您处理(或至少先检查)任何无法找到图像的情况,从而使代码更安全。