2015-12-01 102 views
0

我想以填充UITableViewController所以在我viewDidLoad我有這樣的代碼:功能dataTaskWithRequest不會影響變量

override func viewDidLoad() { 
    let rc = RestCaller() 
    rc.get("events" , authenticate: true) { 
     error, data in 

     if error != nil { 
      print("error") 
     } 

     let events = JSON(data: data) 
     self.events = events["data"].arrayValue 
    } 

} 

,並有我的get函數:

func get(route: String, authenticate: Bool?, next: (error: NSError?, data: NSData) -> Void) 
{ 
    let request = NSMutableURLRequest(URL: NSURL(string: self.baseUrl + route)!) 

    request.HTTPMethod = "GET" 
    if authenticate != nil { 
     request.addValue(getUserProperty("USER_TOKEN") as! String, forHTTPHeaderField: "usertoken") 
     request.addValue((getUserProperty("USER_ID")?.stringValue)!, forHTTPHeaderField: "userid") 
    } 

    _ = NSURLSession.sharedSession().dataTaskWithRequest(request) { 
     data, response, error in 

     next(error: error, data: data!) 

    }.resume() 
} 

但在numberOfRowsInSection方法:

return events.count // return 0 

但是,如果我打印self.events這裏:

override func viewDidLoad() { 
    ... 

     let events = JSON(data: data) 
     self.events = events["data"].arrayValue 
     print(self.events) // not empty 

    ... 

} 

而且我不明白爲什麼:(

任何想法?謝謝 !

回答

0

你似乎忘了重新載入表格。

override func viewDidLoad() { 
let rc = RestCaller() 
rc.get("events" , authenticate: true) { 
    error, data in 

    if error != nil { 
     print("error") 
    } 

    let events = JSON(data: data) 
    self.events = events["data"].arrayValue 

    dispatch_async(dispatch_get_main_queue()) {() -> Void in 
     self.tableView.reloadData() 

    } 
}