最近はSwiftをいろいろ触っています。
さてタイトルのとおり、
例えば、NSURLSessionを使って
サーバーから取得したデータをUITableViewの各セルに表示させようとして、
func hoge()
{
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let request = NSURLRequest(URL: NSURL("https://xxxx.example.com"))
let task = session.dataTaskWithRequest(request, completionHandler: self.getData)
task.resume()
}
func getData(data:NSData?, res:NSURLResponse?,error:NSError?)
{
// ここで取得したデータをゴニョニョして...
// ↓reload()してんのに表示変わらん!
self.tableView.reloadData()
}
このような現象になっている場合。
安心してください。大丈夫です。
上記の例の場合、tableViewのreloadData()がメインスレッドから呼ばれていないことが原因なので、
reloadData()の呼び出しは
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
こうしてやればOKです。
以上でェェェえす。




