質問編集履歴

1

思考錯誤したことの追記

2019/12/13 01:22

投稿

Soul3725
Soul3725

スコア21

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  **①ユーザーがイベントに参加意思を示す(eventの該当イベント内entry_usersの配列にユーザーのIDを追加する)**
20
20
 
21
- **②entry_usersに自身のuIDが入ってるイベントを絞り出す**
21
+ **②entry_userに自身のuIDが入ってるイベントを絞り出す**
22
22
 
23
23
  **(indexOf(uID)でnilが返ってこないものを取得??)**
24
24
 
@@ -133,3 +133,55 @@
133
133
 
134
134
 
135
135
  ```
136
+
137
+ ### 思考錯誤したこと(2019/12/13追記)
138
+
139
+ ②について。
140
+
141
+ uIDはドキュメント”entry_user”内のフィールド”users”にArray型で格納されているためまず取得する方法を模索しました。
142
+
143
+ [公式ドキュメント](https://firebase.google.com/docs/firestore/query-data/get-data?authuser=1#get_a_document)を参考にArray型が取得できないか実践してみました。
144
+
145
+ まず上記リンクを参考に記述、取得したDictionary型から”users”をdataDescriptionにセットするよう書き換えました。
146
+
147
+ ```Swift
148
+
149
+ let dataDescription = document.data()!["users"]!
150
+
151
+ ```
152
+
153
+ するとdataDescriptionをprintすると下記が表示されました。(uIDは仮でA,B,Cの3つを用意しました)
154
+
155
+ ```
156
+
157
+ (
158
+
159
+ A,
160
+
161
+ B,
162
+
163
+ C
164
+
165
+ )
166
+
167
+ ```
168
+
169
+ 自分の知ってるArray型は[]で囲まれているもののみだったのでtype(of: dataDescription)で型を調べたところ"__NSArrayM"と表示されました。
170
+
171
+ 調べましたが正直いい意味がわからなくArray型の一種ということしか理解できなかったので次はArray型にキャストしてみました。
172
+
173
+ ```Swift
174
+
175
+ let dataDescription = document.data()!["users"]! as! Array<String>
176
+
177
+ ```
178
+
179
+ そして再度printすると無事配列を読み込むことができました。
180
+
181
+ ```
182
+
183
+ [A,B,C]
184
+
185
+ ```
186
+
187
+ とりあえず②の初期の段階ですがこれから各イベントのentry_userにアプローチしていくにあたり上記の方法でいいのかがわかりません。