Чтобы избежать написать неправильный синтаксис, который вы могли бы использовать XCode автодополнение. Control + Пробел запускает функцию автозаполнения Xcode, также, если вы хотите знать, доступную инициализации методы относительно общего класса, как SKScene вы просто написать:
Выполнение этого вы можете немедленно увидеть входные свойства и требуемые типы.
О вашем случае у вас есть класс с именем GameScene, что подкласс SKScene
и вы пытаетесь сделать:
SKScene.init(coder: <#T##NSCoder#>)
Obviusly вы не можете передать viewSize
в качестве входного параметра для этого метода инициализации. Вы должны использовать init(size: CGSize)
методу
Детали:
Сейчас мы говорим о init(coder: NSCoder)
. Процедура сохранения состояния вашего вида на диск известна как сериализация. Обратное - десериализация - восстановление состояния объекта с диска.
override func encode(with aCoder: NSCoder) {
// Serialize your object here
}
override init() {
super.init()
}
required init?(coder aDecoder: NSCoder) {
// Deserialize your object here
fatalError("init(coder:) has not been implemented")
}
Эти методы необходимы в пользовательский класс, чтобы поговорить с Interface Builder, например, объекты в раскадровку, что сериализовать состояние этого объекта на диске и десериализации его при использовании раскадровки, но если вы не Не добавляйте никаких новых свойств в свой подкласс, вы также можете не писать собственный код сериализации и десериализации для подкласса.
Почему вы передаете ViewSize в объект GameScene? чего вы пытаетесь достичь? –
Ошибка довольно ясна. – rmaddy
Я предполагаю, что вы пытаетесь сделать 'GameScene (размер: viewSize)' и XCode кричит на вас, чтобы сделать его «GameScene (coder: viewSize)»? – Knight0fDragon