Swift3でサーバーにある画像(URL)をUIImageとして描画する方法

参考

Swift 3: Display Image from URL

環境

-Swift3
-Xcode8

実装

まずはletで宣言した後に、URLのコンテンツをダウンロードする。これはURLSessionオブジェクトで行うことができる。補完ハンドラが呼び出されると、WebからUIImageがダウンロードされます。

 let catPictureURL = URL(string: "https://データのurl/画像データ.jpg")!

  /*

  デフォルト設定でセッションオブジェクトを作成する。

 */

 let session = URLSession(configuration: .default)
  /*

   ダウンロードタスクを定義します。ダウンロードタスクは、
   URLの内容をデータオブジェクトとしてダウンロードし、
   そのデータで望むことを実行できます。

  */
 let downloadPicTask = session.dataTask(with: catPictureURL) { (data, response, error) in
  /*
    ダウンロードが完了しました。
  */

     if let e = error {
         print("cat pictureのダウンロード中にエラーが発生しました: \(e)")
     } else {
   /*
  エラーは見つかりませんでした。
  レスポンスがないと変わってしまいますので、それもチェックしてください。
   */
         if let res = response as? HTTPURLResponse {
             print("レスポンスコード付きの猫の画像をダウンロード \(res.statusCode)")
             if let imageData = data {
  /*
   最後に、そのデータをイメージに変換し、
   それを使って望むことをします。
   */

                 let imageimage = UIImage(data: imageData)
                 print(imageimage!)
                 self.templateThumbnailImageView.image = imageimage               

    /*
   あなたのイメージで何かをしてください。
    */

             } else {
                 print("画像を取得できませんでした:画像はありません")
             }
         } else {
             print("何らかの理由で応答コードを取得できませんでした")
         }
     }
 }

 downloadPicTask.resume()

 

最後に、downloadPicTask.resume()で呼び出します。そうしないと、タスクは開始されません。このコードはすべて最初はちょっと気になるかもしれませんが、URLSession APIはブロックベースであり、非同期で動作することができます。UIスレッドを数秒間ブロックすると、OSがアプリケーションを終了します。

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事