2016-05-17 93 views
2

我正在开发一个Parse应用程序,该应用程序具有包含来自Facebook的共同朋友的标签的单元格的tableview,我的问题是表格中的所有内容工作正常,但共同的朋友标签,它需要很长时间才能显示,除非我选择行(当我选择行时,数字立即出现)。以下是我的代码,用于获取共同朋友并设置单元格中的标签:UITableView中的单元格不会更新,直到在iOS中选择(swift)

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

传递给dataTaskWithRequest的块可能没有在主线程上执行,这可能导致出现这些类型的症状。尝试执行像UI更新到主线程:

dispatch_async(dispatch_get_main_queue()) { 
    cell.mutualFriendsLabel?.text = (jsonresult.valueForKey("summary")?.valueForKey("total_count"))!.stringValue + " Mutual Friends" 
} 
+0

这完美地工作,谢谢! –

1

我认为你需要在主队列更新UI是这样的:

dispatch_async_(your_queue) { 
    task.response { 
     //handle data 
     dispatch_async(dispatch_get_main_queue()) { 
      //update UI, etc. change label text 
     } 
    } 
} 
相关问题