gpt4 book ai didi

ios - 对可选属性感到困惑——如何更好地编写这段代码?

转载 作者:行者123 更新时间:2023-11-29 02:24:37 24 4
gpt4 key购买 nike

我将 Swift 与 Sprite Kit 一起使用,目前有这段代码

class GameScene: SKScene
{
// properties
var mySprite: SKSpriteNode?
//////////////////////////

...

func initSprite()
{
let randomNumber = GenerateRandomNum() // some rand 0-2

switch randomNumber
{
case 0:
mySprite = SKSpriteNode(imageNamed: "sprite1")
mySprite.position = somePos
self.addChild(mySprite!)
case 1:
mySprite = SKSpriteNode(imageNamed: "sprite2")
mySprite.position = somePos
self.addChild(mySprite!)
case 2:
mySprite = SKSpriteNode(imageNamed: "sprite3")
mySprite.position = somePos
self.addChild(mySprite!)
default:
println("Error")
}

}

}

我想将 self.addChild(mySprite!) 放在 switch 语句的外面和下面,这样我就不必每次都写它.但问题是,如果我将它写在 switch 语句之外,当我调用 initSprite() 时会出现运行时错误,因为 "found nil while unwrapping an可选值”。

如何更好地编写此代码,以便我不必在每种情况下都编写 self.addChild(mySprite!)

最佳答案

惰性变量怎么样?

class GameScene: SKScene
{
// properties
lazy var mySprite: SKSpriteNode = {
let imageNames = [ "sprite1", "sprite2", "sprite3" ]
let imageName = imageNames[ arc4random_uniform(3) ]

let node = SKSpriteNode( imageNamed: imageName )
self.addChild(node)
node
}
}

mySprite 将始终为非零值,并在首次访问时分配。 (或者适应不懒惰。)

关于ios - 对可选属性感到困惑——如何更好地编写这段代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702278/

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