Пользовательская геометрия SceneKit в Swift на iOS не работает, но эквивалентный код Objective C делает

Я стремлюсь принять новый язык Swift, так как кажется, что это путь к развитию Apple. Я также был впечатлен новой поддержкой SceneKit в iOS 8. Я хотел бы программно создавать пользовательскую геометрию во время выполнения, но я изо всех сил пытаюсь заставить работать код Swift. И все же эквивалентный код в Objective C работает нормально.

Это может быть ошибка или что-то не так.

Я просто пытаюсь создать и визуализировать один треугольник. Я буду игнорировать нормали, текстуры и т. Д. Для простоты. Так что я ожидаю увидеть только черный треугольник.

Swift Code (не работает)

var verts = [SCNVector3(x: 0,y: 0,z: 0),SCNVector3(x: 1,y: 0,z: 0),SCNVector3(x: 0,y: 1,z: 0)]

let src = SCNGeometrySource(vertices: &verts, count: 3)
let indexes:Int[]=[0,1,2]
let dat  = NSData(bytes: indexes, length: sizeofValue(indexes))
let ele = SCNGeometryElement(data:dat, primitiveType: .Triangles, primitiveCount: 1, bytesPerIndex: sizeof(Int))
let geo = SCNGeometry(sources: [src], elements: [ele])

let nd = SCNNode(geometry: geo)
scene.rootNode.addChildNode(nd)

Objective C Code (который работает)

SCNVector3 verts[] = { SCNVector3Make(0, 0, 0), SCNVector3Make(1, 0, 0), SCNVector3Make(0, 1, 0) };
SCNGeometrySource *src = [SCNGeometrySource geometrySourceWithVertices:verts count:3];

int indexes[] = { 0, 1, 2 };
NSData *datIndexes = [NSData dataWithBytes:indexes length:sizeof(indexes)];
SCNGeometryElement *ele = [SCNGeometryElement geometryElementWithData:datIndexes primitiveType:SCNGeometryPrimitiveTypeTriangles primitiveCount:1 bytesPerIndex:sizeof(int)];
SCNGeometry *geo = [SCNGeometry geometryWithSources:@[src] elements:@[ele]];

SCNNode *nd = [SCNNode nodeWithGeometry:geo];
d
[scene.rootNode addChildNode:nd];

Любые указатели будут оценены.

Ответы на вопрос(3)

Ваш ответ на вопрос