Swift 编译器 "Fix It" 错误循环 - 可选
Swift compiler "Fix It" error loop - Optionals
Swift 的 "Fix It" 工具抱怨需要感叹号。插入一个后,它抱怨说需要将其移除。 “?”的正确用法是什么?和 ”!”对于此代码?!
var debugLabel : SKLabelNode!
override func update(currentTime: NSTimeInterval) {
debugLabel!.text = "Ang: \(getFormattedNum(ball.physicsBody?.angularVelocity! ))"
}
func getFormattedNum( num:CGFloat ) ->String {
var formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
return formatter.stringFromNumber(num)!
}
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
debugLabel = childNodeWithName("deBugger") as SKLabelNode
...
}
Fix It 来回切换的地方是update func中这个属性末尾的感叹号:
ball.physicsBody?.angularVelocity!
有!或者 ?错误是 "Operand of postfix ! should have optional type; type is "CGFloat".
没有可选指标,错误是 "Value of optional type "CGFloat?" not unwrapped...
注意"deBugger"是sks中的标签名
问题是您有一个可选链 ball.physicsBody?.angularVelocity
。这将导致一个可选的,因为它是一个可选链。不幸的是,你不能通过在末尾添加 !
来解包,因为 ball.physicsBody?.angularVelocity!
也是一个可选链(!
只解包 angularVelocity
而不是整个链)。此外,在这种情况下,angularVelocity
是 CGFloat
类型,因此您无法解包它。您需要在可选链周围添加括号,然后您可以解包它:
debugLabel!.text = "Ang: \(getFormattedNum((ball.physicsBody?.angularVelocity)! ))"
Swift 的 "Fix It" 工具抱怨需要感叹号。插入一个后,它抱怨说需要将其移除。 “?”的正确用法是什么?和 ”!”对于此代码?!
var debugLabel : SKLabelNode!
override func update(currentTime: NSTimeInterval) {
debugLabel!.text = "Ang: \(getFormattedNum(ball.physicsBody?.angularVelocity! ))"
}
func getFormattedNum( num:CGFloat ) ->String {
var formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
return formatter.stringFromNumber(num)!
}
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
debugLabel = childNodeWithName("deBugger") as SKLabelNode
...
}
Fix It 来回切换的地方是update func中这个属性末尾的感叹号: ball.physicsBody?.angularVelocity!
有!或者 ?错误是 "Operand of postfix ! should have optional type; type is "CGFloat".
没有可选指标,错误是 "Value of optional type "CGFloat?" not unwrapped...
注意"deBugger"是sks中的标签名
问题是您有一个可选链 ball.physicsBody?.angularVelocity
。这将导致一个可选的,因为它是一个可选链。不幸的是,你不能通过在末尾添加 !
来解包,因为 ball.physicsBody?.angularVelocity!
也是一个可选链(!
只解包 angularVelocity
而不是整个链)。此外,在这种情况下,angularVelocity
是 CGFloat
类型,因此您无法解包它。您需要在可选链周围添加括号,然后您可以解包它:
debugLabel!.text = "Ang: \(getFormattedNum((ball.physicsBody?.angularVelocity)! ))"