swift - активировать переход на класс из файла модели вне класса?Элемент экземпляра не может использоваться по типу - PullRequest
0 голосов
/ 01 марта 2019

В моем приложении есть файл модели, где я проверяю свой API.Если проверка сети завершается неудачно с определенным кодом (токен неактивен), я хочу, чтобы приложение вернулось обратно на страницу входа.

Моя проблема заключается в том, что вызов API хранится в моем файле модели, а не вПосмотреть контроллер класса.

Есть ли способ активировать переход из файла модели вне фактического класса?

Я попытался создать функцию выхода из системы в своем классе TabBarController и использовать ее в своей модели для активации перехода:

class InitialTabBarController: UITabBarController {
...
    func logoutFresh(){
            performSegue(withIdentifier: "logoutFresh", sender: self)
    }

}

Затем в своей модели я добавил:

func pullAPIData(){
...
if httpResponse == 403 {
InitialTabBarController.logoutFresh()
    }
}

Я вызываю функцию pullAPIData () в другом классе контроллера представления (один из viewControllers в tabBarController

Однако это приводит к ошибке, что: элемент экземпляра 'logoutFresh' нельзя использовать для типа 'InitialTabBarController'; Вы имели в виду использовать значение этого типа вместо этого?

Есть ли способ проверить, активен ли InitialTabBarController и затем он инициирует переход из файла модели? Или лучший способ справиться с этим?

1 Ответ

0 голосов
/ 01 марта 2019

В основном, iOS использует шаблон делегирования или шаблоны обработчика завершения для решения сценариев этого типа;

В шаблоне делегирования вы устанавливаете слабую переменную в своем классе модели, которая указывает на ваш viewcontroller.Чтобы после завершения сетевого вызова вы могли использовать этот делегат для вызова функции в контроллере представления

В шаблоне обработчика завершения вы отправляете блок кода, который должен быть выполнен после завершения вызова API, следующим образом:

func pullAPIData(completion: () -> Void){
    //do your stuff
    completion()
}

Вы можете ссылаться на следующие посты, чтобы лучше понять делегатов и обработчики завершения: https://medium.com/@jamesrochabrun/implementing-delegates-in-swift-step-by-step-d3211cbac3ef https://medium.com/@nimjea/completion-handler-in-swift-4-2-671f12d33178

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...