我对 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)
}
我不清楚?我对此的阅读表明我们正在以一种我们不在乎是否有零的方式展开包装。但这是否使这个可选绑定比上面的强制展开更好?或者这是“可选链接”?我是否应该在分配时只进行检查components
?我应该担心这里的安全吗?我所做的唯一“升级”测试是在将字典存档分配给moleculeDictionary
.
我将有数百个这样的任务,所以我想把它做好。欢迎就处理此问题的最佳方法提出建议!
谢谢,伯恩