gpt4 book ai didi

ios - swift iOS : How to force a loop with async code to run synchronously?

转载 作者:行者123 更新时间:2023-11-28 12:40:37 25 4
gpt4 key购买 nike

所以我有以下代码:

func handleSendPost() {
let postRef = Global.FIRDB!.child("posts").childByAutoId()

for p in postComponents {
var values: [String : Any] = ["type": p.type!.rawValue, "text": p.text]

let childRef = reference.childByAutoId()
childRef.updateChildValues(values, withCompletionBlock: {
(err, ref) in

if err != nil {
print(err)
return
}

// object successfully saved
})
}
}

它基本上是一个用于博客的 iOS 应用程序。当有人创建帖子时,它会被分解成可能是文本或图像的组件。他们完成编辑后,将通过调用 updateChildValues 异步函数将其存储在 Firebase 上。问题是我想维护 postComponents 的顺序。如果我运行上面的代码,顺序可能会困惑,因为它取决于 updateChildValues 运行的速度。

我已经尝试过使用 DispatchSemaphore (iOS 10) 但无济于事。

最佳答案

可能还有其他方法,但我想您可以忘记循环并改用递归。流程如下:

  1. 将元素存储在数组中。
  2. 如果数组中至少有一个元素,则调用发送第一个元素的函数。
  3. 在完成 block 中,删除数组的第一个元素并重复步骤 2。

这将按顺序发送所有元素,并在没有更多元素时停止。

关于ios - swift iOS : How to force a loop with async code to run synchronously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39474366/

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