例如,我有以下代码:
let numberOfBlocks = 3
let blockWidth = SKSpriteNode(imageNamed: "image.png").size.width
let padding = 20.0
let offsetX : Float = (self.frame.size.width - (blockWidth * numberOfBlocks + padding * (numberOfBlocks-1))) / 2
我遇到了一个错误:
'Double' 无法转换为 'UInt8'
是否有一种方法可以隐式地转换数据类型(也许仅适用于原始数据类型)?
编辑:
我知道如何通过使用特定类型的构造函数进行显式转换,就像Iducool建议的那样。但是对于我的问题来说,这并没有太大帮助,因为我们甚至不知道在哪里添加转换。我在 playground 中简化了表达式:
问题出现在“padding”变量中,错误消息是
'Double' 无法转换为 'UInt8'
所以我进行了转换:
现在问题出现在“blockWidth”变量中。
我再次添加了转换:
然后错误消息是:
类型 'UInt8' 不符合协议 'FloatLiteralCovertible'
最终的工作表达式是:
是否简单而迅速?我认为不是。
Array
/NSArray
,Int
/NSNumber
。 - Bryan Chen