Поток 1 EXC_BAD_ACCESS (код = 2, адрес = 0x7ffeeb1aeff8) - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь выучить VIPER.Я следовал этому уроку: Урок VIPER .У меня есть эти Interactor и Presenter.

class PPresenter: ViewToPresenterProtocol {

    var view: PresenterToViewProtocol?  

    var router: PresenterToRouterProtocol? = PRouter()

    var interactor: PresenterToInteractorProtocol? = PInteractor()


    func initiateFetch() {
        interactor?.fetchMatches()
    }

    func showMatchScreen(navigationC: UIViewController) {
        router?.pushToMatchDetailScreen(navigationC: navigationC)
    }
}

extension PPresenter: InteractorToPresenterProtocol {
    func matchFetched(match: MatchDetails?, banner: Banner?) {
        print(match!)

        print(banner!)
    }

    func matchFetchError() {
        //TODO
    }
}


class PInteractor: PresenterToInteractorProtocol {

    var presenter: InteractorToPresenterProtocol? = PPresenter()

    var live: Live?

    var upcoming: Upcoming?

    var banners: Banner?

    func fetchMatches() {
        let parameters = ["api_token" : Constants.USER_INFO["api_token"].rawValue,"player_id" : Constants.USER_INFO["player_id"].rawValue]

        ServiceHelper.sharedInstance.sendRequest(path: "get-predictor", params: parameters, showSpinner: true) { (response, error) in

            if let error = error {
                print("Unable to fetch match listing",error.localizedDescription)

                return
            } else {
                guard let obj = try? JSONDecoder().decode(MatchDetails.self, from: response.rawData()) else { self.presenter?.matchFetchError(); return }

                guard let bannerObj = try? JSONDecoder().decode(Banner.self,from: response.rawData()) else {self.presenter?.matchFetchError(); return }

                self.presenter?.matchFetched(match: obj, banner: bannerObj)
            }
        }
    }
}

Теперь, что здесь происходит, у меня работает маршрутизатор, представление идет, оно вызывает докладчик, докладчик вызывает интерактор, интерактор успешно вызываетAPI и получение данных, и теперь пришло время вернуть данные, полученные от Interactor, в Presenter, и вот он постоянно выдает эту ошибку.И я понятия не имею, почему кто-то может помочь?

1 Ответ

0 голосов
/ 27 ноября 2018

Я думаю, что у вас есть циклический вызов, возможно, ваш интерактор не полностью инициализирован, и вам нужны данные из него, а затем вы получили «Ошибка неверного доступа».

...