gpt4 book ai didi

ios - 在 CollectionView Swift 上第二次调用 (insertItems) 时应用程序崩溃

转载 作者:行者123 更新时间:2023-11-28 12:06:39 27 4
gpt4 key购买 nike

基本上第一次运行它是完美的然后第二次它崩溃了。我有一些图片显示它在哪一行代码上崩溃。该问题似乎与执行批处理有关。

代码:

  let ref = Database.database().reference().child("test")

ref.observeSingleEvent(of: .value, with: { (snapshot) in

if let snapDict = snapshot.value as? [String:AnyObject] {
for snap in snapDict {

if snap.key == "testValue" {

self.log.performBatchUpdates({

let indexPath = IndexPath(row: group.count, section: 0)

group.append("textHere")

self.log.insertItems(at: [indexPath])

}, completion: nil)
}
}

enter image description here enter image description here

最佳答案

您正在尝试在循环中添加多个新值,但一次添加一个。最好将它们全部批量放入一个插入件中。

let ref = Database.database().reference().child("test")

ref.observeSingleEvent(of: .value, with: { (snapshot) in
if let snapDict = snapshot.value as? [String:AnyObject] {
var newPaths = [IndexPath]()
for snap in snapDict {
if snap.key == "testValue" {
let indexPath = IndexPath(item: group.count, section: 0)
newPaths.append(indexPath)

group.append("textHere")
}
}

if !newPaths.isEmpty {
self.log.insertItems(at: newPaths)
}
}
}

我不使用 Firebase,但据我所知,它的完成处理程序是在主队列上调用的。如果不是,则需要更新此代码,以便 if let snapDict... 中的此代码在主队列上运行。

另请注意,在使用 Collection View 时,您应该创建一个带有 itemsectionIndexPath。在 TableView 中使用 rowsection

关于ios - 在 CollectionView Swift 上第二次调用 (insertItems) 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49291302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com