UITableView中的单元格在iOS(swift)中选中之前不会更新

时间:2016-05-17 10:17:22

标签: ios swift uitableview facebook-graph-api parse-platform

我正在开发一个带有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方法为空。

2 个答案:

答案 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
        }
    }
}