У меня есть этот класс apiHandler
со следующими методами делегата:
@objc protocol apiHandlerDelegate: class {
@objc optional func didGetMessages(_ sender:apiHandler)
@objc optional func didGetEvents(_ sender:apiHandler)
@objc optional func didLogin(success:Bool, sender:apiHandler)
}
Один из моих viewControllers
зависит от didGetEvents
, поэтому я делаю
class myViewController: UIViewController, apiHandlerDelegate
Теперь,каким-то образом в myViewController
мне также нужно реализовать
func didLogin(success: Bool, sender: apiHandler) {
// do nothing
}
В противном случае приложение вылетит, вернув
[myApp.myViewController didLoginWithSuccess: sender:]: нераспознанный селектор отправлен на экземпляр 0x7f90ac01b410 '
Не понимаю ли я необязательную часть?Я хочу иметь возможность просто реализовать те методы делегата, которые необходимы для моего viewController
EDIT //////
Итак, в моем apiHandler я выполняю вызов REST, и вблок завершения, который я называю didLogin, таков:
let urlString = String(format:"%@/api/sessions/current", baseUrl)
Alamofire.request(urlString, headers: headers)
.responseJSON { response in
self.Login(completion: { (success) in
self.delegate?.didLogin!(success: success, sender: self)
completion(true)
})
}
Важно знать, что: 1) didGetMessages и didGetEvents ведут себя опционально, т.е. мне не нужнореализовать их в viewControllers, которые являются делегатами apiHandler. 2) didLogin так или иначе НУЖЕН быть реализованным, в противном случае приложение вылетает
. Основное различие между 1) и 2) состоит в том, что у didLogin есть блок завершения.Мне нужно иметь логическое значение в моих ViewControllers