質問編集履歴

6

誤字がありました。

2021/06/13 04:03

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- self?.unReadAry.removeAll()
77
+ self.unReadAry.removeAll()
78
78
 
79
79
  value.forEach({ data in
80
80
 

5

誤字がありました。

2021/06/13 04:03

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
File without changes
test CHANGED
@@ -20,17 +20,21 @@
20
20
 
21
21
  しかし、queryOrderedByChildとqueryEqualToValueを使った場合だとなぜか上手く[[String:Any]]に入れられないのです。
22
22
 
23
- 現場 DataSnapShot、下記のコードでいいますとsnapShotsをprintするとデバッグでDataを取り出せたことは確認できています。
24
-
25
23
 
26
24
 
27
25
  ### 該当のソースコード
28
26
 
29
27
 
30
28
 
31
- 簡単にご説明するとChatアプリの各部屋conversations示していて、
29
+ 簡単にご説明するとChatアプリの各部屋conversations示していて、
30
+
32
-
31
+ idは各部屋に割り振ってあります。
32
+
33
- idは各部屋に割り振ってあります。そのidで各部屋が持つメッセージ群を呼び出しております。
33
+ そのidで各部屋が持つメッセージ群を呼び出しております。
34
+
35
+ 現状 DataSnapShot、下記のコードでいいますとsnapShotsをprintすると、
36
+
37
+ デバッグでDataを取り出せたことは確認できていますが、if文後の[[String:Any]]で、queryを使わなければ全て収まっていたはずの各部屋メッセージ群が、一つの部屋のメッセージ群しか入れられないのです。
34
38
 
35
39
 
36
40
 
@@ -192,19 +196,11 @@
192
196
 
193
197
 
194
198
 
195
-
196
-
197
-
198
-
199
- Database.database().reference().child("(id)/messages").observe
199
+ どなたか同じ状況で解決された方がいらっしゃればご教授いただけると大変助かります。
200
-
201
-
200
+
202
-
203
- Database.database().reference().child("(id)/messages").queryOrdered(byChild: "is_read").queryEqual(toValue: false).observe
204
-
205
-
206
-
207
- に変えた場合他のかも変わるのでょうか?
201
+ 今一度卒よろくお願いします。
202
+
203
+
208
204
 
209
205
 
210
206
 

4

誤字がありました。

2021/06/13 04:00

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
File without changes
test CHANGED
@@ -26,11 +26,13 @@
26
26
 
27
27
  ### 該当のソースコード
28
28
 
29
- is_readはfalseで未読を返します。 
29
+
30
-
30
+
31
- conversationsは各部屋の情報で最新のメッセージだけが表されています。
31
+ 簡単にご説明するとChatアプリの各部屋がconversationsていて、
32
-
32
+
33
- 下記のコードその各部屋のidをforeachを使って各部屋メッセージ呼び出してます。
33
+ idは各部屋に割り振ってあります。そのid各部屋が持つメッセージ群を呼び出しております。
34
+
35
+
34
36
 
35
37
  ```ここに言語名を入力
36
38
 
@@ -190,6 +192,10 @@
190
192
 
191
193
 
192
194
 
195
+
196
+
197
+
198
+
193
199
  Database.database().reference().child("(id)/messages").observe
194
200
 
195
201
 

3

修正コードの追加

2021/06/13 03:48

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
@@ -1 +1 @@
1
- Firebase RealTimeDatabaseでchatアプリの未読数を取得したい
1
+ Firebase query使って取得したdataを[[String:Any]]に入れたい
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 今回chat機能の未読数カウントを実装中で、FirebaseのRealTime Databaseから条件付で呼び出したDataを、
9
+ FirebaseのRealTime DatabaseからqueryOrderedByChild、queryEqualToValueで呼び出したDataを、
10
10
 
11
11
  用意した[[String:Any]]配列にどうしても上手く入れらずお世話になりたく書き込ませていただきました。
12
12
 
@@ -16,19 +16,11 @@
16
16
 
17
17
  ### 発生している問題・エラーメッセージ
18
18
 
19
- 条件を指定せずDatabaseから呼び出した場合は上手く配列に入れることができ未読数をカウントできました。
19
+ queryを指定せずDatabaseから呼び出した場合は上手く配列に入れることができました。
20
-
21
- しかしこれでは、周知の通り毎度過去の膨大なメッセージに呼び出しでmemoryや取得に時間を費やしてしまいます。
20
+
22
-
23
- そこを危惧して条件指定し呼び出しをと思いました。
24
-
25
-
26
-
27
- queryOrderedByChildとqueryEqualToValueを使ったのですが、それだとなぜか上手く取り出せないのです。
21
+ しかし、queryOrderedByChildとqueryEqualToValueを使った場合だとなぜか上手く[[String:Any]]に入れられないのです。
22
+
28
-
23
+ 現場 DataSnapShot、下記のコードでいいますとsnapShotsをprintするとデバッグでDataを取り出せたことは確認できています。
29
-
30
-
31
-
32
24
 
33
25
 
34
26
 
@@ -88,9 +80,9 @@
88
80
 
89
81
  if userIdPartner == currentUserId && is_read == false{
90
82
 
91
- self?.unReadAry.append(is_read)
83
+ self.unReadAry.append(is_read)
92
-
93
- print(self!.unReadAry)
84
+
85
+
94
86
 
95
87
  }
96
88
 
@@ -106,14 +98,6 @@
106
98
 
107
99
  下記は print(snapShots) のデバッグ表記です。
108
100
 
109
-
110
-
111
- 豊臣秀吉さんとの会話 is_readがfalse、すなわち未読である7番目と8番目のメッセージが呼び出された。
112
-
113
- 織田信長さんとの会話 is_readがfalse、すなわち未読である0番目のメッセージが呼び出された。
114
-
115
-
116
-
117
101
  ```
118
102
 
119
103
  Snap (messages) {

2

誤字がありました。

2021/06/12 16:26

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
File without changes
test CHANGED
@@ -206,6 +206,16 @@
206
206
 
207
207
 
208
208
 
209
+ Database.database().reference().child("(id)/messages").observe
210
+
211
+
212
+
213
+ Database.database().reference().child("(id)/messages").queryOrdered(byChild: "is_read").queryEqual(toValue: false).observe
214
+
215
+
216
+
217
+ に変えた場合他の何かも変わるのでしょうか?
218
+
209
219
 
210
220
 
211
221
  ### 補足情報

1

誤字がありました。

2021/06/11 15:25

投稿

SadajiroOkuno
SadajiroOkuno

スコア4

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,15 @@
66
66
 
67
67
  if let value = snapShots.value as? [[String:Any]]{
68
68
 
69
-
69
+ print("""
70
+
71
+ [[String:Any]]でoptinalをifで処理後
72
+
73
+ (value)
74
+
75
+ """)
76
+
77
+
70
78
 
71
79
  self?.unReadAry.removeAll()
72
80