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

ben*_*650 0 cgfloat swift

我是Swift的初学者.

我有这个错误

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

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


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

return UIImage(named: imageName)!

}
Run Code Online (Sandbox Code Playgroud)

All*_*ian 5

该错误表明您正在尝试连接字符串和浮点数(或者无论如何不能连接的不同类型+).您可以像这样插入和构造字符串:

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

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

    return UIImage(named: imageName)!
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多相关信息

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

首先,在调用方法并从帧/边界中获取值时,指定widthheight作为CGFloats可能很方便,但它很可能在将来咬你(例如,想象一个具有几乎'完美'宽度的帧120.001- 或者任何例如,从一个部门出来的疯狂号码).因此,我相信Int在这种情况下s会更好地用于维持大小/文件名之间的(相对更安全的)映射.

PS.在你的情况下,a let可能比a更可取,var因为imageName它只是构造并返回而没有进一步修改,最后UIImage?作为返回类型将迫使你处理(或至少先检查)任何无法找到图像的情况,因此让你的代码更安全.