2017-05-10 19 views
1

私はSKNodeのノードを反復処理しています。 bgNodeに属するすべての子ノードを出力すると、探しているすべての名前が表示されます(例: "red"を含む名前)。バックグラウンドノード+チェック文字列を反復処理する際の例外

しかし、このコードが実行されると、プログラムは終了し、EXC_BREAKPOINTを取得します。それは通常child.name ?.contains("red ")を強調表示しますが、返されたすべてがブール値である場合、なぜこれが起こっていますか?

for child in bgNode.children { 
     if (child.name?.contains("red"))! { 
      let popUp = SKAction.moveBy(x: 0, y: 20, duration: 1.0) 
      child.run(SKAction.repeatForever(SKAction.sequence([wait]))) 
     } 
    } 

答えて

1

これを試してみてください:それは返すすべてがブール値である場合には、通常「child.name?.contains("redを強調

if let name = child.name, name.contains("red") { 
    ... 
} 

)しかし、なぜこの出来事はありますか?

それが原因のchild.name?がnil可能性が発生し、後でそれをアンラップ強制しよう:child.name?.contains("red")! -

+0

がそれを説明いただきありがとうございクラッシュ原因である(nil)!、可能性 - 名前ことを確認していませんでしたありませんでした! – illuminatedtype

関連する問題