"@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)
}
Другие вопросы по тегам