I am setting up swipe recognition in my SKScene, and I found that hard coding all the recognizers takes time and isn't really neat, so I decided to use a for-loop, and a dictionary that contains UISwipeRecognizers as keys, and () functions as values. The problem is that it gives me the error in the title while trying to add the target using recognizer.addTarget(self, action: #selector(functionForRecognizer[recognizer]!))
Here is the code:
class xxxxx: SKScene {
let rightSwipeRecognizer = UISwipeGestureRecognizer()
let leftSwipeRecognizer = UISwipeGestureRecognizer()
let upSwipeRecognizer = UISwipeGestureRecognizer()
let downSwipeRecognizer = UISwipeGestureRecognizer()
var swipeRecognizers: [UISwipeGestureRecognizer] {
    return [rightSwipeRecognizer, leftSwipeRecognizer, upSwipeRecognizer, downSwipeRecognizer]
}
var directionForRecognizer: [UISwipeGestureRecognizer : UISwipeGestureRecognizerDirection] {
    return [
        rightSwipeRecognizer : .right,
        leftSwipeRecognizer : .left,
        upSwipeRecognizer : .up,
        downSwipeRecognizer : .down
    ]
}
func didSwipeRight() {}
func didSwipeLeft() {}
func didSwipeUp() {}
func didSwipeDown() {}
var functionForRecognizer: [UISwipeGestureRecognizer : ()] {
    return [
        rightSwipeRecognizer : didSwipeRight(),
        leftSwipeRecognizer : didSwipeLeft(),
        upSwipeRecognizer : didSwipeUp(),
        downSwipeRecognizer : didSwipeDown()
    ]
}
func setupSwipeRecognizers() {
    for recognizer in swipeRecognizers {
        recognizer.addTarget(self, action: #selector(functionForRecognizer[recognizer]!))
        recognizer.direction = directionForRecognizer[recognizer]!
        self.view?.addGestureRecognizer(recognizer)
    }
}
override func didMove(to view: SKView) {
    super.didMove(to: view)
    setupSwipeRecognizers()
}
}
Btw, i tried putting @objc while declaring the functions, but it didn't work. Also, I tried exposing the class to NSObject, by removing inheritance from SKScene and conforming to NSObject, and still, it didn't work. Moreover, i cannot conform the class to a UIKit class, cz i need it as a SKScene, and even, i tried conforming it to a UIViewController (without SKScene, of course), but still didn't work,
 
    