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



我是Swift的初学者。

我有这个错误

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

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

var imageName = key  + "_" + width + "_" + height
return UIImage(named: imageName)!
}

错误表示您正在尝试连接字符串和浮点(或者不同类型,无法通过+连接)。你可以插入&相反,构造这样的字符串:

func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{
    var imageName = "(key)_(width)_(height)"
    return UIImage(named: imageName)!
}

你可以在这里阅读更多关于

好吧,在@Grimxn的评论之后再多说几句。。。

首先,当调用该方法并从帧/边界获取值时,将widthheight指定为CGFloats可能很方便,但它很可能会在将来咬到你(例如,想想像120.001这样几乎"完美"宽度的帧,或者除法中得出的任何疯狂数)。因此,我相信Ints在这种情况下会更好地服务,以便维护大小/文件名之间的映射(相对更安全)。

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

最新更新