мои приложения обрабатывают sh, когда я пытаюсь передать данные в другой контроллер, но они успешно загрузили данные в мой viewController. хотя это довольно странно, потому что данные успешно отображаются на моем ярлыке, а мой imageView - на контроллере, и я могу подозревать, что данные еще не загружаются. но если данные не загружаются, почему imageView отображает мои данные, здесь я покажу вам свой код.
// This is my schoolListViewModel
class SchoolListViewModel {
private(set) var schoolListViewModel = [SchoolViewModel]()
private let services: ProfileServices
private let schools = UserDefaults.getSelectedSchool()
var count: Int {
return schoolListViewModel.count
}
var id: String {
selectedSchoolID()
}
var imageUrl: String {
selectedSchoolImageURL()
}
var schoolName: String {
selectedSchoolName()
}
var schoolCity: String {
selectedSchoolCity()
}
init(services: ProfileServices) {
self.services = services
}
}
extension SchoolListViewModel {
func loadData(success: @escaping (() -> Void), failure: @escaping ((String) -> Void)) {
services.fetchSchoolList { [weak self] result in
switch result {
case .success(let schools):
self?.schoolListViewModel = schools.compactMap({ SchoolViewModel(school: $0)
})
success()
case .failure(let error):
failure(error.localizedDescription)
}
}
}
}
// this is in my profileViewController
var schoolListViewModel: SchoolListViewModel!
private let profileServices = ProfileServices()
// this is my viewModel in my viewDidLoad
progressHUD.show(in: self.view)
schoolListViewModel = SchoolListViewModel(services: profileServices)
schoolListViewModel.loadData(success: {
self.progressHUD.dismiss(animated: true)
self.populateSchool()
}) { [weak self] error in
self?.showHUDWithError(error)
}
schoolSelectionBtn.addTarget(self, action: #selector(handlePickSchool), for: .touchUpInside)
// This is my objc function
private func showHUDWithError(_ error: String) {
progressHUD.textLabel.text = "Error"
progressHUD.detailTextLabel.text = error
progressHUD.dismiss(afterDelay: 4)
}
@objc private func handlePickSchool() {
let selectSchoolVC = SelectSchoolPopUpVC()
selectSchoolVC.schoolListViewModel = schoolListViewModel
present(selectSchoolVC, animated: true, completion: nil)
}
// this is in my SchoolPopUpVC controller
var schoolListViewModel: SchoolListViewModel!
// this is where the error goes in my schoolPopUpVC tableViewDataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return schoolListViewModel.count
}
здесь, когда я пытаюсь передать данные, ошибка отображается в моем tableView numberOfRowsInSection
неожиданно обнаружен ноль при попытке развернуть необязательное значение