несколько запросов к облачному набору загружены неправильно - PullRequest
0 голосов
/ 10 марта 2020

Я запускаю для последующих запросов в 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)
          }
      }
}
...