- iOS
-
2017-04-21 - 更新:2018-02-15
何やらタイトルが長くなってしまいましたが、複合的な内容なのでこうなりました。
今回やりたかったことはタイトルの通りですが、分解すると…
1)WEBからデータをダウンロード
2)バックグラウンドで処理を実行
3)JSONデータを解析
4)解析したデータをRealmに挿入
以上の4つです。
エラーが出なくなるまでかなり苦労したのですが、一番の原因は日本語の扱いに関する部分ですので、
日本語を含まないデータの解析だけならすんなり可能ではないかと思います。
1)WEBからデータをダウンロード
WEBからデータをダウンロードするにはURLSessionを使います。
ダウンロードするURLを指定
let url: String = "http://www.exam.jp/json.php"
セッションを作成します。
let session = URLSession(configuration: URLSessionConfiguration.default)
タスクを登録します。
let task = session.dataTask(with: URLRequest(url: Foundation.URL(string: url)!), completionHandler: { (data, response, error) in if let urlContent = data { // ここに処理を記述 } })
作成したタスクを実行します。
task.resume()
2)バックグラウンドで処理を実行
バックグラウンドで処理を実行するには、GCD(Grand Central Dispatch)を使用します。
DispatchQueue.global().async { // バックグラウンドスレッドでの処理を記述 }
asyncだと非同期処理、syncだと同期処理になります。
続きを読む…»
