回答編集履歴

2

詳細に

2019/09/01 19:16

投稿

unhappychoice
unhappychoice

スコア1531

test CHANGED
@@ -3,3 +3,81 @@
3
3
 
4
4
 
5
5
  にしたがって、 `viewDidLoad()` などで Cloud Firestore からデータを取得 -> view にセットする必要があるかと思います。
6
+
7
+
8
+
9
+ ```
10
+
11
+ class ViewController {
12
+
13
+ let db = Firestore.firestore()
14
+
15
+ let ref = db.collection("rooms").document("commentRoom").collection("commentRoom2").document("room47")
16
+
17
+ var iineCount2 = 0
18
+
19
+
20
+
21
+ override func viewDidLoad() {
22
+
23
+ super.viewDidLoad()
24
+
25
+ iineCount2 = // ????のFirestoreのデータ取得に従って初期化
26
+
27
+
28
+
29
+ // addSnapshotListener はつまり、lambda(????の中身の部分) を登録することなので、ボタンを押すたび lambda を登録してしまうと、 lambda が登録回数分実行されてしまう
30
+
31
+ // ので、 viewDidLoad 等の初期化時に一回行うだけで良い
32
+
33
+ ref.addSnapshotListener{ (documentSnapshot, error) in
34
+
35
+ guard let documentSnapshot = documentSnapshot
36
+
37
+ else{
38
+
39
+ print("Error fetching document: (error!)")
40
+
41
+ return
42
+
43
+ }
44
+
45
+ let source = documentSnapshot.metadata.hasPendingWrites ? "Local" : "Server"
46
+
47
+ print("(source) data : (String(describing: documentSnapshot.data()))")
48
+
49
+
50
+
51
+ let toridashi = documentSnapshot.data()?["iineCount"]!//ここでいいねカウントだけ取り出す
52
+
53
+ iineCount2 = toridashi! as! Int // 取り出すだけ
54
+
55
+ }
56
+
57
+ }
58
+
59
+
60
+
61
+ @IBAction func iineBAction(_ sender: Any) {
62
+
63
+ iineCount2 += 1
64
+
65
+ ref.updateData(["iineCount":iineCount2]){ err in // 保存だけで良い
66
+
67
+ if let err = err {
68
+
69
+ print("Error writing document: (err)")
70
+
71
+ } else {
72
+
73
+ print("Document successfully written!")
74
+
75
+ }}
76
+
77
+
78
+
79
+ }
80
+
81
+ }
82
+
83
+ ```

1

URL 修正

2019/09/01 19:16

投稿

unhappychoice
unhappychoice

スコア1531

test CHANGED
@@ -1,4 +1,4 @@
1
- https://firebase.google.com/docs/firestore/query-data/get-data?hl=ja
1
+ [https://firebase.google.com/docs/firestore/query-data/get-data?hl=ja](https://firebase.google.com/docs/firestore/query-data/get-data?hl=ja)
2
2
 
3
3
 
4
4