1
我想在for循環中使用完成處理程序。問題在於它會在完成處理程序返回之前繼續運行循環,因爲它是異步調用。附件是我的代碼。我需要使用GCD嗎?我很新(很明顯)是swift/ios。任何意見將不勝感激。鮑勃解析嵌套完成處理程序
for srcTerm in sFields { //search using all search fields
multiQuery (searchTerm: srcTerm) {
if srResult.count < self.lastValue {
self.lastValue = srResult.count
self.lastSearch = srcTerm
}
}
// Do more stuff
}
func multiQuery (searchTerm: String, completion: @escaping ([PFObject]) ->()) {
var exArray = [PFObject]()
let query = PFQuery(className: "searchLinks")
do {
query.whereKey("searchTerms", equalTo: searchTerm)
query.findObjectsInBackground (block: { (objects, error)-> Void in
if let error = error {
print("Error Generated: ",error)
return
}
if let objects = objects {
// do stuff
}
completion(self.srResult)
})
}
} // end of function
有有幾種方法可以做到這一點(派遣組織,承諾等)。看看在https://stackoverflow.com/a/23112134/2124535 – nathan
可能重複[GCD與嵌套解析查詢](https://stackoverflow.com/questions/31347407/gcd-with-nested-parse-queries ) – nathan
在完成所有查詢後你想做什麼?上面提到的問題/響應(第二個)似乎就像你在找什麼,儘管API已經在Swift 3中更新了一點。 – nathan