Методы Swift Subclass не распознаются - PullRequest
0 голосов
/ 20 марта 2020

Я работаю со SpriteKit, и у меня есть подкласс, написанный для класса SKSpriteNode.

class PlayFieldNode: SKSpriteNode {

    var myFunction: (()->())?

    // other methods

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?){
        if let f = myFunction {
            f()
        }
    }

}

Внутри дочернего узла PlayFieldNode, который я хочу сделать,

self.parent!.myFunction = self.myFunction

Когда я пытаюсь сделать это, он даже не скомпилируется и выдает предупреждение, типа Value of type 'SKNode' has no member 'myFunction'

Я относительно новичок в работе со swift, я что-то упускаю из-за наследования или замыканий? Я дважды проверил и убедился, что родитель на самом деле является PlayFieldNode, который я хочу использовать.

1 Ответ

2 голосов
/ 20 марта 2020

Да, потому что parent - это базовый SKNode класс, который ничего не знает о вашем myFunction, поэтому вам нужно сначала определить, является ли родительский -a вашим подклассом, поэтому используйте

if let parent = self.parent as? PlayFieldNode {
   parent.myFunction = self.myFunction
}
...