找不到接受提供的参数的“init”的重载
Posted
技术标签:
【中文标题】找不到接受提供的参数的“init”的重载【英文标题】:Could not find an overload for 'init' that accepts the supplied arguments 【发布时间】:2014-06-29 22:59:37 【问题描述】:这两行代码给了我
找不到接受所提供参数的“init”的重载
错误:
var w = Int(self.bounds.size.width / Float(worldSize.width))
var h = Int(self.bounds.size.height / Float(worldSize.height))
【问题讨论】:
什么是init
?什么是云?你能说得更具体点吗?
worldSize.width 是什么类型?
尝试在单独的行中创建您在代码中使用的 Float,然后我们可以判断是哪个操作导致了错误。
【参考方案1】:
错误信息具有误导性。这应该有效:
var w = Int(self.bounds.size.width / CGFloat(worldSize.width))
var h = Int(self.bounds.size.height / CGFloat(worldSize.height))
CGSize
的 width
和 height
元素被声明为 CGFloat
。
在 64 位平台上,CGFloat
与 Double
相同,具有 64 位,
而Float
只有 32 位。
所以问题是除法运算符, 这需要两个相同类型的操作数。与 (Objective-)C 相比,Swift 从不将值隐式转换为 不同的类型。
如果worldSize
也是CGSize
,那么你根本不需要演员表:
var w = Int(self.bounds.size.width / worldSize.width)
var h = Int(self.bounds.size.height / worldSize.height)
【讨论】:
以上是关于找不到接受提供的参数的“init”的重载的主要内容,如果未能解决你的问题,请参考以下文章
找不到接受提供的参数的“logInWithPermissions”的重载
找不到接受类型参数列表的 XCTAssertEqual 的重载 ([String : AnyObject], [String : AnyObject])