私は Swift に比較的慣れておらず、オプションの安全面をまだ習得していません。
タイプの辞書があり[String: [SCNNode]]
ます。与えられた分子は、 の要素として複数のコンポーネントを持ちます[SCNNode]
。その分子について、このコンポーネントの配列を取得し、各要素をローカルSCNNode
に割り当てて、表示、操作、およびアニメーション化します。
let components = moleculeDictionary["aceticAcid"] // the array of components
// [baseMolecule, hydrogenCharge, oxygenCharge, ionizingH, ionizedBond, bonds]
atomsNode_1 = components![0] // baseMolecule
baseNode.addChildNode(atomsNode_1)
atomsNode_5 = components![3] // ionizingH
atomsNode_1.addChildNode(atomsNode_5)
// etc.
オプションでこれをバインドしようとすると、コンパイラはこれに満足しているようです。
if let node = components?[0] { // baseMolecule
baseNode.addChildNode(node)
}
? については不明です。これについての私の読書は、nil があっても気にしないような方法でアンラップしていることを示唆しています。しかし、このオプションのバインディングは、上記の強制的なアンラップよりも優れていますか? それとも、これは「オプションの連鎖」ですか?代わりに、割り当て時にチェックを行う必要がありcomponents
ますか? ここでも安全性について心配する必要がありますか?私が行った唯一の「アップスチーム」テストは、に割り当てる前に辞書アーカイブが存在することmoleculeDictionary
です。
私はこれらの課題を何百も持っているので、これを正しくしたいと思います。これを処理する最善の方法に関する提案は大歓迎です!
ありがとう、バーン