Использование селектора в Swift 3 NotificationCenter observer

#ios #selector #swift3

#iOS #селектор #swift3

Вопрос:

 NotificationCenter.default.addObserver(self, selector: Selector(("uploaded")), name: NSNotification.Name(rawValue: "uploaded"), object: nil)
  

Я писал name: «uploaded:» и xcode исправил его в приведенном выше коде. Проблема в том, что при запуске приложения я получаю нераспознанный селектор.

Кто-нибудь знает, как это исправить, чтобы работать с Swift 3

Ответ №1:

Используйте синтаксис (проверка идентификатора) #selector :

Без параметра:

 #selector(uploaded)
  

С параметром:

 #selector(uploaded(_:))
  

Ответ №2:

 NotificationCenter.default.addObserver(self, selector: #selector(ViewController.update), name: NSNotification.Name(rawValue: "uploaded"), object: nil)

func update() {
      // do what you want
   }
  

пожалуйста, обратите внимание, что «ViewController» — это имя класса, в котором находится ваша функция

Комментарии:

1. Или, вместо замены ViewController именем класса, просто полностью опустите имя класса, и он будет использовать текущий класс.