"@lvalue $T7" не совпадает с "CGPoint!"
Я пытаюсь переместить коллекцию узлов в SceneKit на iOS, но получаю загадочную ошибку. Вот мой код до сих пор:
func renderer(aRenderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval) {
let cubes = scene.rootNode.childNodesPassingTest { (node, stop) -> Bool in node.name == "cube" }
for cube in cubes {
cube.position = SCNVector3(x: cube.position.x - 5.0, y: cube.position.y, z: cube.position.z)
}
}
На линии cube.position = ...
я получил '@lvalue $T7' is not identical to 'CGPoint!'
Что означает эта ошибка? Кроме того, если есть лучший способ перебрать эти узлы, пожалуйста, дайте мне знать! Благодарю.
1 ответ
Решение
childNodesPassingTest
возвращает[AnyObject]
и Свифт испытывает затруднения, выясняя, какой тип cube
есть (видимо, думает, что это кто-то position
собственность CGPoint!
). Явное приведение cubes
в [SCNNode]
следует это исправить:
for cube in cubes as [SCNNode] {
cube.position = SCNVector3(x: cube.position.x - 5.0, y: cube.position.y, z: cube.position.z)
}