質問編集履歴

1

コードや質問文の編集を行いました

2020/10/04 13:13

投稿

yotubarail
yotubarail

スコア23

test CHANGED
@@ -1 +1 @@
1
- MVPでModelのfunctionが実行された後の処理をPresenterに書きたい
1
+ MVPにおけるPresenterでnilが出てしまう
test CHANGED
@@ -1,8 +1,12 @@
1
1
  Viewで打ち込んだ文字(searchText)をPresenterを通してModelに渡し、Modelで情報を得た後にViewが更新されるようにしたいと考えています。
2
2
 
3
- Model内のfetchUserDataで実際に情報を得ることはできたのですが、その後reloadDataを動かすために処理を描こうとしたら Extra trailing closure passed in callエラーが出てしまいました
3
+ Model内のfetchUserDataで実際に情報を得ることはできたのですが、その後ビルドを行うとViewを更新するためのメソッド「self.view.reloadData(users: result)」のviewの部分がnilになりエラーが出てしまいま
4
4
 
5
+
6
+
5
- どなたか良い解決方法がありましたら。ご教授いただけますと幸いで
7
+ nilになってしまう理由がわからずにいるのですが、どなたか解決方法などご教授いただけいでしょうか
8
+
9
+
6
10
 
7
11
 
8
12
 
@@ -14,6 +18,8 @@
14
18
 
15
19
  protocol Input {
16
20
 
21
+
22
+
17
23
  func didTappedSearchButton(searchText: String)
18
24
 
19
25
  }
@@ -22,7 +28,9 @@
22
28
 
23
29
  protocol UserView {
24
30
 
31
+
32
+
25
- func reloadData(_ users: [SearchResult.UserData])
33
+ func reloadData(users: [SearchResult.UserData])
26
34
 
27
35
  }
28
36
 
@@ -38,7 +46,7 @@
38
46
 
39
47
  var model = UserModel()
40
48
 
41
- private var view: UserView?
49
+ private var view: UserView!
42
50
 
43
51
 
44
52
 
@@ -52,11 +60,13 @@
52
60
 
53
61
  print("Receive " + searchText)
54
62
 
55
- model.fetchUserData(text: searchText) { // Extra trailing closure passed in call
63
+ model.fetchUserData(text: searchText, completion: { result in
56
64
 
57
- ここにreloadDataを書きたい
65
+ print("Result", result)
58
66
 
67
+ self.view.reloadData(users: result) // Unexpectedly found nil while implicitly unwrapping an Optional value
68
+
59
- }
69
+ })
60
70
 
61
71
  }
62
72