Swift编译器"修复它"错误循环 - 选项

时间:2015-03-23 02:11:58

标签: swift optional

斯威夫特"修复它"工具抱怨需要一个惊叹号。插入一个后,它抱怨它需要被删除。什么是"的正确用法?"和"!"这段代码?!

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
   ...
}

地点修复它来回切换是更新功能中此属性末尾的感叹号:    ball.physicsBody?.angularVelocity!

随着!要么 ?错误是" postfix的操作数!应该有可选的类型;类型是" CGFloat"。

没有可选指示符,错误是"可选类型的值" CGFloat?"没有打开......

请注意" deBugger"是sks中标签的名称。

1 个答案:

答案 0 :(得分:1)

问题是你有一个可选的链ball.physicsBody?.angularVelocity。这是一个可选的结果,因为它是一个可选的链。遗憾的是,您无法通过向!添加ball.physicsBody?.angularVelocity!来展开,因为!也是一个可选链(angularVelocity仅展开angularVelocity而不是整个链条)。此外,在这种情况下,CGFloat的类型为debugLabel!.text = "Ang: \(getFormattedNum((ball.physicsBody?.angularVelocity)! ))" ,因此您无法解开它。您需要在可选链周围添加括号,然后您可以打开它:

{{1}}