Получение сбоя при выполнении количества разделов в представлении коллекции - PullRequest
0 голосов
/ 18 декабря 2018

Здравствуйте, я заполняю UICollectionView, но при выполнении номера раздела выдается сообщение об ошибке

Ошибка

Обнаружено ноль при развертывании значения

вот мой код

var subjects: SubjectResponse?


    func callSubChapAPI(){
        let preferences = UserDefaults.standard
        let studentlvl = "student_lvl"
        let student_lvl = preferences.object(forKey: studentlvl) as! String
        print(student_lvl)
        let params = ["level_id": student_lvl]
        Alamofire.request(subListWithChapter, method: .post, parameters: params).responseData() { (response) in
            switch response.result {
            case .success(let data):
                do {
                    let decoder = JSONDecoder()
                    decoder.keyDecodingStrategy = .convertFromSnakeCase

                     self.subjects = try decoder.decode(SubjectResponse.self, from: data)

                    self.collView.reloadData()
                } catch {
                    print(error.localizedDescription)
                }
            case .failure(let error):
                print(error.localizedDescription)
            }
        }
    }
}

extension ExploreTableViewCell : UICollectionViewDataSource {

   func numberOfSections(in collectionView: UICollectionView) -> Int {
            return self.subjects!.subjectList.count
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.subjects!.subjectList.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ExploreCollectionViewCell
        let url = subjects!.subjectList[indexPath.section].subList[indexPath.row].chImage
        print(url)
        return cell
    } 
}

Но я получаю сбой, поэтому, пожалуйста, помогите мне, почему я получаю сбой, где я сделал неправильно

1 Ответ

0 голосов
/ 18 декабря 2018

В numberOfSections вам нужно вернуть количество предметов в subjectList, если subjects равно nil, вернуть 0

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return subjects?.subjectList.count ?? 0
}

теперь каждый предмет внутри subjectList имеет свойствокоторый является массивом subListnumberOfItemsInSection верните число элементов в subList для определенного subjectList (теперь вы можете принудительно развернуть subjects, потому что вы знаете, что есть, если numberOfSections больше 0)

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return subjects!.subjectList[section].subList.count
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...