Zrobiłem prostą aplikację do interakcji z bazą danych CloudKit. Zasadniczo jest to tylko próbnik dat i dwa przyciski, pierwszy to dodanie nowego rekordu z ustawionym czasem do bazy danych, a drugi pobranie wszystkich rekordów. Wygląda na to, że działa dobrze, z tym że wszystkie operacje są bardzo powolne. Otrzymanie odpowiedzi z obu metod saveRecord i performQuery trwa około 10 sekund. Co ja robię źle? Poniżej znajduje się kod z pobierania rekordów.Powolny czas odpowiedzi z interfejsów API CloudKit?
@IBAction func retreiveButtonClick(sender: AnyObject) {
self.labelOutlet.text = "Waiting..."
func myHandler(results:[AnyObject]!, error:NSError!) {
if let err = error {
println("err: \(err.localizedDescription)")
} else {
self.labelOutlet.text = "Got \(results.count) results:"
for record in results {
let time = record.objectForKey("testTime") as NSDate
self.labelOutlet.text = self.labelOutlet.text + "\n\(time.description)"
}
}
}
var query = CKQuery(recordType:"TestTable", predicate:NSPredicate(value:true))
cloudDatabase.performQuery(query, inZoneWithID: nil, myHandler)
}
Testuję to na moim iPhonie 5, który jest podłączony do lokalnego WiFi. Zauważyłem, że zapisane zapisy pojawiają się w CloudKit Dashboard na długo przed wywołaniem instrukcji obsługi zakończenia (mam dużo czasu na sprawdzenie), więc podejrzewam, że zrobiłem coś nie tak w moim kodzie.
, który wydaje się działać, dziękuję! – pc3e
Nawet bez żadnego kodu podtrzymującego główny wątek, z jakiegoś powodu istnieje duże opóźnienie. W każdym razie wywołanie głównego wątku poprawia opóźnienie dzięki. – malhal