各 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
か? ラップを強制的に解除し、返される値がなく、空の String がある""
場合、nil が返されると考えていました。
EDIT2:
Antonioによる答えは確かに私が求めていたものですがSKNode.name
、ノードがファイルから来ている場合scene.SKS
、名前が指定されていなくてもノードは名前""
(空の文字列)を取得しているようです。コードを実行すると:
let childName = eachChild.name ?? "Undefined"
上記のコードを設定して実行すると、 が取得される"Name"
か""
、決して取得されません。"Undefined"
eachChild.name = nil
"Undefined"
*.sks