Swift 无法使用类型为“($T10, CGFloat)”的参数列表调用“+”
Swift Cannot invoke '+' with an argument list of type '($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)!
}
你可以阅读more about this here
好的,在@Grimxn 的评论后再说几句...
首先,将 width
和 height
指定为 CGFloat
s 在调用方法并从 frame/bounds 中获取值时可能会很方便,但它很可能会将来咬你(例如,考虑一个几乎 'perfect' 宽度的框架,如 120.001
- 或者任何来自一个部门的疯狂数字)。所以,我相信 Int
s 在这种情况下会更好地服务,以便维护 sizes/filenames.
之间的(相对更安全的)映射
PS。此外,在您的情况下,let
可能比 var
更可取,因为 imageName
只是构建并且 returned 没有进一步修改,最后 UIImage?
作为 return 类型会强制您处理(或至少首先检查)无法找到图像的任何情况,从而使您的代码更安全。
我是 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)!
}
你可以阅读more about this here
好的,在@Grimxn 的评论后再说几句...
首先,将 width
和 height
指定为 CGFloat
s 在调用方法并从 frame/bounds 中获取值时可能会很方便,但它很可能会将来咬你(例如,考虑一个几乎 'perfect' 宽度的框架,如 120.001
- 或者任何来自一个部门的疯狂数字)。所以,我相信 Int
s 在这种情况下会更好地服务,以便维护 sizes/filenames.
PS。此外,在您的情况下,let
可能比 var
更可取,因为 imageName
只是构建并且 returned 没有进一步修改,最后 UIImage?
作为 return 类型会强制您处理(或至少首先检查)无法找到图像的任何情况,从而使您的代码更安全。