gpt4 book ai didi

Swift 可选绑定(bind)和 SKNode.name

转载 作者:行者123 更新时间:2023-11-28 11:22:08 26 4
gpt4 key购买 nike

有没有更好的方法来编写我获取每个 SKNode 名称的代码,这似乎有点冗长。

// eachChild is an SKNode
for eachChild in children {
var theActualChildName: String
if let childName = eachChild.name {
theActualChildName = childName
} else {
theActualChildName = "Undefined"
}
println("NODE NAME = \(theActualChildName)")
}

我可以写,(见下文)即使没有名字也能工作,但如果它强制展开可选的感觉很糟糕。

// eachChild is an SKNode
for eachChild in children {
println("NODE NAME = \(eachChild.name!)")
}

我知道 Swift 完全是为了安全,但感觉就像我陷入了代码的泥潭,想知道我是否遗漏了什么?

编辑:我注意到即使 SKNode.name是一个字符串?如果你强行打开它并且它没有值,它会返回空字符串 "" ,我以为它会返回零。

编辑 2:请注意,安东尼奥的回答确实是我所追求的,但在 SKNode.name 的情况下当节点来自 scene.SKS文件似乎即使没有指定名称,节点仍然获得名称 "" (空字符串)。如果您运行代码:

let childName = eachChild.name ?? "Undefined"

您将获得给定的 "Name""" , 你永远不会得到 "Undefined"如果你设置 eachChild.name = nil并运行上面的代码你会得到"Undefined"我假设名称属性在 *.sks 中设置为“”如果未指定其他值,则为文件。

最佳答案

我假设 name 是可选字段 - 您可以使用 nil coalescing operator :

let actualChildName = eachChild.name ?? "Undefined"

关于Swift 可选绑定(bind)和 SKNode.name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26866458/

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