我是Swift的初学者。
我有这个错误
无法调用' +'使用类型'($ T10,CGFloat)'
的参数列表func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{
var imageName = key + "_" + width + "_" + height
return UIImage(named: imageName)!
}
答案 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的评论之后再说几句话......
首先,在调用方法并从帧/边界中获取值时,将width
和height
指定为CGFloat
可能很方便,但它很可能会在未来(例如,想象一个几乎像120.001
一样的完美宽度的框架 - 或者例如从某个部门出来的任何疯狂的数字)。因此,我认为Int
在这种情况下会更好,以便在尺寸/文件名之间保持(相对更安全)的映射。
PS。另外,let
可能优于var
,因为imageName
刚刚构建并返回而未经进一步修改,最后UIImage?
作为返回类型会强制您处理(或至少先检查)任何无法找到图像的情况,从而使代码更安全。