Индекс вне диапазона при отклонении контроллера представления с представлением коллекции - PullRequest
0 голосов
/ 19 января 2020

Когда я отклоняю свой обычай mVC при вставке элементов в представление коллекции, приложение вылетает с ошибкой индекса вне диапазона. Неважно, насколько я удаляю все источники данных collectionView, все равно происходит сбой. Вот что я делаю, чтобы вставить элементы:

  DispatchQueue.global(qos: .background).async { // [weak self] doesn't do much

 for customs in Global.titles.prefix(8) { 
 autoreleasepool {
 let data = self.getData(name: customs)
 Global.customs.append(data)
  DispatchQueue.main.async { [weak self] in
    self?.insertItems()
           }
       }
    }
 }




 func insertItems() { // this function helps me insert items after getting data and it works fine


    let currentNumbers = collectionView.numberOfItems(inSection: 0)
    let updatedNumber = Global.customs.count
    let insertedNumber = updatedNumber - currentNumbers

    if insertedNumber > 0 {

    let array = Array(0...insertedNumber-1)

    var indexPaths = [IndexPath]()

    for item in array {
        let indexPath = IndexPath(item: currentNumbers + item, section: 0)
        indexPaths.append(indexPath)

    }

 collectionView.insertItems(at: indexPaths)

    }

}

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

    Global.customs.removeAll()
    collectionView.reloadData()
    dismiss(animated: true, completion: nil)

Я подозреваю, что с Я загружаю данные, используя фоновый поток, представление коллекции вставляет элементы, даже когда представление выгружено (ноль), но использование DispatchQueue.main.async { [weak self] in self?.insertItems() } тоже не помогает.

...