Я создал простое приложение для взаимодействия с облачной базой данных CloudKit. По сути, это всего лишь выбор даты и две кнопки, первая добавка новой записи с установленным временем в базу данных, а вторая - извлечение всех записей. Кажется, что это работает отлично, за исключением того, что все операции очень медленные. Для получения ответа от saveRecord и performQuery требуется около 10 секунд. Что я делаю не так? Ниже приведен код восстановления записей.Медленное время отклика от 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)
}
Я тестирую это на своем iPhone 5, который подключен к локальному Wi-Fi. Я заметил, что сохраненные записи отображаются в CloudKit Dashboard задолго до того, как вызывается обработчик завершения (у меня есть достаточно времени для проверки), поэтому я подозреваю, что сделал что-то не так в своем коде.
Это, кажется, работает, спасибо! – pc3e
Даже без какого-либо другого кода, поддерживающего основную тему, по какой-то причине длинная задержка. Во всяком случае, вызов основного потока исправляет задержку. – malhal