gpt4 book ai didi

Swift 编译器 "Fix It"错误循环 - 可选

转载 作者:可可西里 更新时间:2023-11-01 02:23:34 25 4
gpt4 key购买 nike

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 来回切换的地方是更新函数中此属性末尾的感叹号: ball.physicsBody?.angularVelocity!

与!或者 ?错误是“后缀的操作数!应该有可选类型;类型是“CGFloat”。

如果没有可选指示器,错误是“可选类型“CGFloat 的值?”未展开...

请注意,“deBugger”是 sks 中标签的名称。

最佳答案

问题是您有一个可选链 ball.physicsBody?.angularVelocity。这将导致一个可选的,因为它是一个可选链。不幸的是,您不能通过在末尾添加 ! 来解包,因为 ball.physicsBody?.angularVelocity! 也是一个可选链(! 只展开 angularVelocity 而不是整个链)。此外,在这种情况下,angularVelocityCGFloat 类型,因此您无法解包它。您需要在可选链周围添加括号,然后您可以打开它:

debugLabel!.text = "Ang:  \(getFormattedNum((ball.physicsBody?.angularVelocity)! ))"

关于Swift 编译器 "Fix It"错误循环 - 可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com