質問編集履歴

1

user, usertModel のnil が見つかりません

2019/08/09 09:07

投稿

ROKIDOG
ROKIDOG

スコア20

test CHANGED
File without changes
test CHANGED
@@ -12,4 +12,146 @@
12
12
 
13
13
 
14
14
 
15
+ ```ここに言語を入力
16
+
17
+ func loadTimeline () {
18
+
19
+ guard let currentUser = NCMBUser.current() else {
20
+
21
+ // ログインに戻る
22
+
23
+ let storybord = UIStoryboard(name: "SignIn", bundle: Bundle.main)
24
+
25
+ let rootViewController = storybord.instantiateViewController(withIdentifier: "RootNavigationController")
26
+
27
+ UIApplication.shared.keyWindow?.rootViewController = rootViewController
28
+
29
+ //ログイン状態保持
30
+
31
+ let ud = UserDefaults.standard
32
+
33
+ ud.setValue(false, forKey: "isLogin")
34
+
35
+ ud.synchronize()
36
+
37
+ return
38
+
39
+ }
40
+
41
+ //NCMBからデータ取ってくる
42
+
43
+ let query = NCMBQuery(className: "Post")
44
+
45
+
46
+
47
+ //Userの情報もとってくる
48
+
49
+ query?.order(byDescending: "user")
50
+
51
+ //順番を降順にする postのcreatedate
52
+
15
- ![イメージ説明](dacbcf74930027f6320a8e9385323481.png)
53
+ query?.order(byDescending: "createDate")
54
+
55
+ // オブジェクト取得
56
+
57
+ query?.findObjectsInBackground({ (result, error) in
58
+
59
+ if error != nil {
60
+
61
+ //errorを表示 localizedDiscription=現地の言葉で表示
62
+
63
+ SVProgressHUD.showError(withStatus: error?.localizedDescription)
64
+
65
+
66
+
67
+ } else {
68
+
69
+ //投稿を格納いておく配列を初期化(これをしないとreload時に二重追加されて同じファイルが重複)
70
+
71
+ self.posts = [Post]()
72
+
73
+ //結果を一つ一つ取り出して繰り返す
74
+
75
+ for postObject in result as! [NCMBObject] {
76
+
77
+ //ユーザー情報をUserクラスにセット
78
+
79
+ let user = postObject.object(forKey: "user") as! NCMBUser
80
+
81
+ // 大会済みユーザーの投稿を避けるためactivがfalse以外のみものだけ表示
82
+
83
+ if user.object(forKey: "activ") as? Bool != false {
84
+
85
+ //投稿したユーザー情報をuserModelにまとめる
86
+
87
+ **let userModel = User(objectId: user.objectId, userName: user.userName) =Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value**
88
+
89
+
90
+
91
+ userModel.displayName = user.object(forKey: "displayName") as? String
92
+
93
+
94
+
95
+ //投稿の情報取得
96
+
97
+ let imageUrl = postObject.object(forKey: "imageUrl") as! String
98
+
99
+ let text = postObject.object(forKey: "text") as! String
100
+
101
+
102
+
103
+ // ふたつのデータ(投稿情報と誰が投稿したか)を合わせてPostクラスにセット
104
+
105
+ let post = Post(objectId: postObject.objectId, user: userModel, imageUrl: imageUrl, text: text, createDate: postObject.createDate)
106
+
107
+
108
+
109
+ //likeの状況(自分が過去にlikeしているか)に寄ってデータ挿入
110
+
111
+ let likeUsers = postObject.object(forKey: "likeUser") as? [String]
112
+
113
+ if likeUsers?.contains(currentUser.objectId) == true {
114
+
115
+ post.isLiked = true
116
+
117
+
118
+
119
+ } else {
120
+
121
+ post.isLiked = false
122
+
123
+ }
124
+
125
+
126
+
127
+ //いいねの件数
128
+
129
+ if let likes = likeUsers {
130
+
131
+ post.likeCount = likes.count
132
+
133
+ }
134
+
135
+
136
+
137
+ //配列に加える
138
+
139
+ self.posts.append(post)
140
+
141
+ }
142
+
143
+ }
144
+
145
+
146
+
147
+ //投稿のデータが揃ったらTableViewをリロード
148
+
149
+ self.timelineTableView.reloadData()
150
+
151
+
152
+
153
+ }
154
+
155
+ })
156
+
157
+ ```