【发布时间】:2014-11-11 13:52:28
【问题描述】:
有没有更好的方法来编写我得到每个 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 是一个字符串?如果你强制打开它并且它没有返回值并且空字符串"",我想它会返回零。
EDIT2:
请注意,Antonio 的答案确实是我所追求的,但在 SKNode.name 的情况下,当节点来自 scene.SKS 文件时,似乎即使没有指定名称,节点仍会获得名称 @ 987654327@(空字符串)。如果你运行代码:
let childName = eachChild.name ?? "Undefined"
您将获得给定的"Name" 或"",您将永远不会获得"Undefined" 如果您设置eachChild.name = nil 并运行上面的代码,您将获得"Undefined" 我假设name 属性正在获取如果没有指定其他值,则在 *.sks 文件中设置为 ""。
【问题讨论】:
标签: swift sprite-kit optional sknode