Я запускаю для последующих запросов в Cloudkit (Swift- IoS), но иногда некоторые пропускают Вот мой код, я уверен, что он прост, но я просто вижу его
все помогают очень ценится
Мне нужно загрузить 4 записи из одной базы данных, иногда я получаю только 3, нужно подождать завершения загрузки, прежде чем начинать следующую, так что я делаю не так? Я не вижу этого
// this is the function combining all queries
func GeefEenQuizwoord (completed: @escaping (Int) -> Void) {
AantallenOphalen {(aantalLijst) in
DispatchQueue.main.async {
woordenLijst = []
Vertaling1Ophalen {(woord) in
DispatchQueue.main.async {
woordenLijst.append(woord)
Vertaling2Ophalen {(woord) in
DispatchQueue.main.async {
woordenLijst.append(woord)
Vertaling3Ophalen {(woord) in
DispatchQueue.main.async {
woordenLijst.append(woord)
AantepassenWoordOphalen {(woordDB) in
DispatchQueue.main.async {
woordenLijstDB.append(aantepassenWoordDB)
//code to be executed after all words have been downloaded
gekozenWoordDB = woordenLijstDB[quizWoordKeuze]
}
}
}
}
}
}
}
}
}
}
completed(1)
}
// all functions are similar and look like this
func _Vertaling1Ophalen (completionHandler: @escaping (_ woord: WoordType) -> Void) {
woord = WoordType(arabisch: "", nederlands: "", rang: -1, les: "", nummer: 0)
let selectie = NSPredicate(format: "Rang == %@ AND Nummer == %@", rangKeuzeInt as NSNumber, woord1Keuze as NSNumber)
let query = CKQuery(recordType: "CKWoord", predicate: selectie)
query.sortDescriptors = [NSSortDescriptor(key: "Nederlands", ascending: true)]
database.perform(query, inZoneWith: nil) {
results, error in
if error != nil {
print(error?.localizedDescription as Any)
} else {
for res in results! {
let woordDB = res as CKRecord
woordenLijstDB.append(woordDB)
woord.arabisch = woordDB.object(forKey: "Arabisch") as! String
woord.nederlands = woordDB.object(forKey: "Nederlands") as! String
woord.rang = woordDB.object(forKey: "Rang") as! Double
woord.les = woordDB.object(forKey: "Les") as! String
woord.nummer = woordDB.object(forKey: "Nummer") as! Double
}
completionHandler(woord)
}
}
}