我似乎在从全局队列中获取信息到主队列时遇到了一些麻烦。
override func viewDidLoad() {
super.viewDidLoad()
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INTERACTIVE.value), 0)) {
let query = PFQuery(className: "VenueData")
query.whereKey("name", equalTo: "Sedona")
var object = query.findObjects()
if let myObject = object as? [PFObject] {
for x in myObject {
var hotelLabel: String? = x.objectForKey("name") as? String
println(hotelLabel)
dispatch_async(dispatch_get_main_queue()) {
self.new = hotelLabel!
self.hotelarray.append(self.new)
}
}
}
}
}
即使我能够通过dispatch_get_main_queue更改UI,我似乎无法更新其他内容(例如数组),如果我要在块外部打印(hotelarray),只会显示一个空数组。
我理解这是因为mainthread的加载速度明显快于后台线程加载数据所需的时间。让我感到困惑的是,无论dispatch_get_main_queue内部发生了什么,似乎酒店数组都不会得到更新,而UILabels等UI相关内容会相应更新。任何帮助是极大的赞赏。