我已经做了一个简单的应用程序与CloudKit数据库进行交互。本质上它只是一个日期选择器和两个按钮,第一个按照设定的时间向数据库中添加新记录,第二个按钮则检索所有记录。这似乎工作正常,但所有操作都非常缓慢。从saveRecord和performQuery中获取响应大约需要10秒钟。我究竟做错了什么?以下是检索记录的代码。来自CloudKit API的响应时间慢?
@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上测试了这个,它连接到本地WiFi。我注意到,在完成处理程序被调用(我有足够的时间检查)之前,保存的记录显示在CloudKit Dashboard中很久,所以我怀疑我在代码中做了什么错误。
这似乎工作,谢谢! – pc3e 2014-08-30 10:26:49
即使没有其他代码阻止主线程出于某种原因长时间延迟。无论如何,调用主线程修复延迟谢谢。 – malhal 2015-08-28 21:53:36