所以我在下面有这个代码:
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)无济于事。
答案 0 :(得分:2)
可能有其他方式,但我想你可能会忘记循环并使用递归代替。流程如下:
这将按顺序发送所有元素,并在没有更多元素时停止。