如何解决错误更新无效: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])
}
}
所有错误文本:
更新无效:第 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])
}
}