我正在开发一个带有Parse的应用程序,该应用程序有一个包含标签的桌面视图,该标签包含来自Facebook的共同朋友,我的问题是表格中的所有内容都可以正常工作,但共同的朋友标签,显示需要很长时间才能显示我选择行(当我选择行时,数字立即出现)..这是我的代码,用于获取共同的朋友并在单元格中设置标签:
let facebookContext = driverobj?.objectForKey("facebookContext") as! String
let user: PFUser = PFUser.currentUser()!
let access_token = user.valueForKey("authData")?.valueForKey("facebook")?.valueForKey("access_token") as! String
let usercontexturl: NSURL = NSURL(string: "https://graph.facebook.com/\(facebookContext)/mutual_friends?access_token=\(access_token)")!
let myrequest: NSURLRequest = NSURLRequest(URL: usercontexturl)
let mysession = NSURLSession.sharedSession()
let task = mysession.dataTaskWithRequest(myrequest) { data, response, error in
print("Task completed")
do {
let jsonresult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
cell.mutualFriendsLabel?.text = (jsonresult.valueForKey("summary")?.valueForKey("total_count"))!.stringValue + " Mutual Friends"
} catch {
print(error)
}
}
task.resume()
此代码位于cellForRowAtIndexPath方法内,而didSelectRowAtIndexPath方法为空。
答案 0 :(得分:2)
传递给dataTaskWithRequest
的块可能没有在主线程上执行,这可能导致出现这些类型的症状。尝试执行主线程的UI更新,如:
dispatch_async(dispatch_get_main_queue()) {
cell.mutualFriendsLabel?.text = (jsonresult.valueForKey("summary")?.valueForKey("total_count"))!.stringValue + " Mutual Friends"
}
答案 1 :(得分:1)
我认为您需要更新主队列上的UI,如下所示:
dispatch_async_(your_queue) {
task.response {
//handle data
dispatch_async(dispatch_get_main_queue()) {
//update UI, etc. change label text
}
}
}