如何解决错误更新无效:iOS12 上的集合视图中第 0 部分的项目数不正确?

How to solve the error Invalid update: incorrect number of items in section 0 in the collection View on iOS12?

所有错误文本:

更新无效:第 0 部分中的项目数无效。更新 (0) 后现有部分中包含的项目数必须等于更新 (0) 前该部分中包含的项目数更新 (1),加上或减去从该部分插入或删除的项目数(插入 0 个,删除 0 个),加上或减去移入或移出该部分的项目数(移入 0 个,移出 0 个)。

出现这个错误的方法(只有在删除时,从集合中创建或更新一个项目时才没有错误),出现这个错误只有 iOS12、iOS13 和 > 没有错误。

 var cards: [Card] = []

 item = self.cards[itemIndex]
 self.collectionView.performBatchUpdates({
   // here is a request to firebase

   self.db.collection(K.FStore.collectionName!).document((item?.idCard)!).delete() { err in
      if err != nil {
         print("err")
      } else {
         // here removal from the array, which is directly related to CollectionView
         self.cards.remove(at: itemIndex)
      }
    }
 }) {(finished) in
    self.collectionView.reloadData()
 }

 //collection method
 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int   {
 // This is where the application crashes. That is, the method above works out completely, but I don’t understand how it works on ios 13, but not on ios 12 ..
     return cards.count 
 }

对于任何想向 "Duplicate" 发送问题或使用 "SAME RESPONSE" 提出 link 的人 该资源的目的是帮助解决编程问题,碰巧我是 Swift 的新手,在我提出自己的问题之前,我真的看到并尝试解决了我的问题。

但是没有答案给出可以修复错误的结果。 求高人指点,谢谢!

批量更新(复数)在哪里?

您不需要performBatchUpdates,该方法仅对多个同时更新有用。删除数据库中的卡片,成功后从数据源数组中删除卡片,并删除集合视图中的动画项目。

我的建议假定当前索引路径可用,itemIndex 派生自

item = self.cards[itemIndex]

self.db.collection(K.FStore.collectionName!).document((item?.idCard)!).delete() { err in
   if let error = err {
      print("An error occurred", error)
   } else {
      self.cards.remove(at: itemIndex)
      self.collectionView.deleteItems(at: [indexPath])
   }
}