Ich versuche, eine Completion-Handler in einer for-Schleife zu verwenden. Das Problem besteht darin, dass die Schleife weiterhin ausgeführt wird, bevor der Beendigungshandler zurückkehrt, da es sich um einen Async-Aufruf handelt. Beigefügt ist mein Code. Muss ich GCD verwenden? Ich bin neu (offensichtlich) zu swift/ios. Jeder Rat würde sehr geschätzt werden. Bobverschachtelte Completion-Handler analysieren
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
Es Es gibt mehrere Möglichkeiten, dies zu tun (Dispatch Groups, Versprechungen, etc.). Sehen Sie sich https://stackoverflow.com/a/23112134/2124535 an. – nathan
Mögliches Duplikat von [GCD mit verschachtelten Parse-Abfragen] (https://stackoverflow.com/questions/31347407/gcd-with-nested-parse-queries) – nathan
Was möchten Sie tun, nachdem alle Abfragen durchgeführt wurden? Die Frage/Antwort, die oben verlinkt ist (die zweite) scheint das zu sein, wonach Sie suchen, obwohl die API in Swift 3 ein wenig aktualisiert wurde. – nathan