swift - 线程 1 EXC_BAD_ACCESS(代码=2,地址=0x7ffeeb1aeff8)
问题描述
我正在努力学习 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
toPresenter
和 here 收到它不断抛出以下错误:
线程 1 EXC_BAD_ACCESS(代码=2,地址=0x7ffeeb1aeff8)
解决方案
我认为你有一个循环调用,也许你的交互器没有完全初始化,然后你想要从中获取数据,然后你得到“错误访问错误”。
推荐阅读
- sockets - 一个套接字 io 事件不工作,但其他工作正常
- flutter - Flutter如何在文本字段中显示文本和图像
- android - 三星 Galaxy S20 有时会打破黑暗模式
- mysql - 具有用户定义时间范围的数据透视表
- python - 在Python的目录中以相同的顺序读取文本文件路径
- html - Slick 将箭头显示为按钮
- python - 从 python 的 Azure 认知服务(文本到语音)上使用词典的问题
- laravel - laravel 通知 - '字段列表'中的未知列'user_id'
- python - 累积直方图显示错误值
- security - 全站失败登录请求阈值动态公式