teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2016/07/10 11:40

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -31,6 +31,7 @@
31
31
  画面表示時に画像をダウンロードしてStoryboardに乗せたUIImageViewに画像を表示しています。
32
32
  ```swift
33
33
  import UIKit
34
+
34
35
  class ViewController: UIViewController {
35
36
 
36
37
  @IBOutlet weak var imageView: UIImageView!
@@ -41,8 +42,13 @@
41
42
  let api = DownLoadManager()
42
43
  api.downLoadImage { (image) in
43
44
 
45
+ if let image = image {
46
+
44
- // 画像のダウンロードが成功時画像が設定される
47
+ // 画像のダウンロードが成功時画像が設定される
45
- self.imageView.image = image
48
+ self.imageView.image = image
49
+ } else {
50
+ print("ダウンロード失敗")
51
+ }
46
52
  }
47
53
  }
48
54
  }
@@ -51,7 +57,7 @@
51
57
  class DownLoadManager {
52
58
 
53
59
  // クロージャー
54
- func downLoadImage(task: (image: UIImage) -> ()) {
60
+ func downLoadImage(task: (image: UIImage?) -> ()) {
55
61
 
56
62
  // 画像ダウンロード
57
63
  let url = NSURL(string: "https://teratail.com/uploads/contributed_images/78379419b2c58363c546e3e6e094a8c9.png")
@@ -68,6 +74,7 @@
68
74
  } else {
69
75
  // エラー時
70
76
  print("Error!")
77
+ task(image: nil)
71
78
  }
72
79
  })
73
80
  task.resume()

1

修正

2016/07/10 11:40

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  使っているところを提示したほうが分かりやすいと思いますので、クロージャーを使用した簡単な例を載せます。
8
8
 
9
+ 処理を呼び出したところにダウンロードした画像が渡ってくる感じなので(コールバック)直感的にコードがかけると思います。
9
10
  ```swift
10
11
  // DownLoadManagerクラスを生成
11
12
  let api = DownLoadManager()