Я хотел бы расширить SCNNode (если возможно) в Swift. Вот моя попытка:Расширение SCNNode в Swift
class MyNode : SCNNode {
override init(geometry: SCNGeometry) -> SCNNode {
return super.init(geometry)
}
/* Xcode required this */
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
оператор -> что помечается с ошибкой «Последовательные декларации по линии должны быть разделены;».
Я знаю, что это не правильно, но если я юмор Xcode это «исправляет» это следующим образом:
override init(geometry: SCNGeometry); -> SCNNode {
Какой бред, а затем Xcode жалуется на «Ожидаемое заявление».
Я не совсем понимаю реализацию SCNNode - если я посмотрю на нее в Xcode, все объявлено как абстрактное (в комментариях) и не предлагает реализации. Документы не предполагают, что что-либо выходит из SCNNode, вы создаете его напрямую, поэтому я предполагаю, что смогу его расширить.
Спасибо за ваш тщательный ответ. Ваше первое предложение не сработало - оно удалило ошибку из MyNode, но добавило ошибку к созданию экземпляра «Невозможно вызвать init с помощью списка аргументов геометрии типа». Тем не менее, ваше второе предложение сделало так много, спасибо :) Отмечено в заголовочных документах. – PorridgeBear
Нет проблем. Да; Я не был уверен, что вы специально хотели расширить SCNNode с помощью конструктора геометрии или пытаетесь ли вы таким образом, потому что конструктор геометрии выглядел как назначенный инициализатор, поэтому вы пытались сделать компилятор счастливым :) –