Swift/iphone UIViewController.*** must be used from main thread onlyのエラーが出たときの対処法

Pocket

Swift/iphone UIViewController.*** must be used from main thread onlyのエラーが出て解決に困ったので、
解決した方法を以下の通りまとめる。

そもそも非同期スレッドで処理をするように書いていた。

よくあると思うが、URLSessionを使う場合は非同期スレッドで処理をすることが求められる。一方で、webからURLSessionでデータをとってきて、そのデータを画面の描画のデータとして使いたいケースが一般的にあると思うが、私もそのケースだった。

Swift/iphone メインスレッドで処理を行う方法

そのため、URLSession自体は非同期スレッドで記載するが、最終的に画面の描画を行いたい処理を以下のブロックで囲むことでメインスレッドで行うようにすることでエラーが回避できるようになった。

DispatchQueue.main.async {
//メインスレッド処理
}

コメントを残す