0

各 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

4

1 に答える 1

3

これnameはオプションのフィールドだと思います-nil合体演算子を使用できます:

let actualChildName = eachChild.name ?? "Undefined"
于 2014-11-11T13:54:38.250 に答える