在函数中实现此流程图的最佳和最简单的方法是什么? 现在我正在使用两个调度组,但我需要检查它们是否已完成,而不仅仅是在它们完成时。
如果完成,那么:
注意:FB是Facebook,FIR是Firebase数据库
答案 0 :(得分:2)
您可以使用DispatchGroup
执行此操作。尝试以下游乐场;
import UIKit import XCPlayground let dispatchGroup = DispatchGroup.init() for index in 0...4 { dispatchGroup.enter() let random = drand48() let deadline = DispatchTime.now() + random/1000 print("entered \(index)") DispatchQueue.global(qos: .background).asyncAfter(deadline: deadline, execute: { print("leaving \(index)") dispatchGroup.leave() }) } dispatchGroup.notify(queue: .global()) { print("finished all") }
应输出与
类似的内容entered 0 leaving 0 entered 1 entered 2 leaving 1 leaving 2 entered 3 leaving 3 entered 4 leaving 4 finished all
答案 1 :(得分:0)
您可以像这样在Swift 3中实现此流程图。
let fbFriendsArray : [String] = []
let firNickNames :: [String] = []
func flowChart() {
let myGroupOuter = DispatchGroup()
myGroupOuter.enter()
fetchFBfriends(completionHandler: {(isSuccess : Bool) in
myGroupOuter.leave()
})
myGroupOuter.enter()
fetchFIRNickNames(completionHandler: {(isSuccess : Bool) in
myGroupOuter.leave()
})
myGroupOuter.notify(queue: DispatchQueue.main) {
if (fbFriendsArray.isEmpty || firNickNames.isEmpty) {
/// Present Your Error Logic
} else {
/// Fetch Games Logic here
}
}
}
fetchFBfriends
和fetchFIRNickNames
是负责从Facebook和Firebase获取数据的函数。