В своем коде в Presenter
вы создаете запрос к сети и захватываете себя при закрытии без использования слабой или неподтвержденной ссылки. Из-за этого существует цикл сохранения. Вы можете прочитать больше о сохранении циклов здесь .
Обновленный код:
func login(email: String, password: String)
{
self.view.showProgress()
FoodAPI.api.login(email: email, password: password) { [weak self] (msg, user) in
guard let `self` = self else {
return
}
DispatchQueue.main.async {
self.view.hideProgress()
if let user = user
{
AppDelegate.shared.user = user
UserDefaultsHelper.saveUser(user: user)
self.view.openMenu() //this line will dismiss the VC and presents next one.
}else
{
self.view.showAlert(message: msg)
}
}
}
}
Если вы хотите увидеть расширенное использование шаблона MVP , вы можете проверить мой открытый проект здесь и не стесняйтесь спрашивать меня о чем-либо.