質問編集履歴
6
あ
title
CHANGED
File without changes
|
body
CHANGED
@@ -122,6 +122,8 @@
|
|
122
122
|
|
123
123
|
### 写真5
|
124
124
|
実際のアプリに近づけた構成
|
125
|
+
__detail__で値を増やし,__detail__から__Second__へ画面遷移をした際に__Firebase__への書き込みと書き出しを行う.
|
126
|
+
その際に問題が発生する.
|
125
127
|

|
126
128
|
|
127
129
|
|
5
a
title
CHANGED
File without changes
|
body
CHANGED
@@ -122,7 +122,7 @@
|
|
122
122
|
|
123
123
|
### 写真5
|
124
124
|
実際のアプリに近づけた構成
|
125
|
-

|
126
126
|
|
127
127
|
|
128
128
|
|
4
a
title
CHANGED
File without changes
|
body
CHANGED
@@ -63,7 +63,7 @@
|
|
63
63
|
|
64
64
|
|
65
65
|
### コード2
|
66
|
-
|
66
|
+
__SecondViewController.swift__
|
67
67
|
```Swift
|
68
68
|
import UIKit
|
69
69
|
import Firebase
|
3
a
title
CHANGED
File without changes
|
body
CHANGED
@@ -51,6 +51,7 @@
|
|
51
51
|
self.ref.child("値").runTransactionBlock { (MutableData) -> TransactionResult in
|
52
52
|
if let value = MutableData.value as? Int {
|
53
53
|
MutableData.value = value + self.value
|
54
|
+
self.value = 0
|
54
55
|
}
|
55
56
|
return TransactionResult.success(withValue: MutableData)
|
56
57
|
}
|
2
あ
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
### やりたいこと
|
2
|
-
__FirstView__から
|
2
|
+
__FirstView__から__SecondView__へ画面遷移した時に,__Firebase__の値を更新し,その値を__Firebase__から読み取って__SecondView__で表示する.
|
3
3
|
|
4
4
|
|
5
5
|
### これまでの流れ
|
@@ -8,15 +8,9 @@
|
|
8
8
|
0. **写真1**のようにオブジェクトを配置する.
|
9
9
|
0. **コード1**と**コード2**を記述する.
|
10
10
|
0. **写真3**のように__Realtime Database__を構成する.
|
11
|
-
0. プロジェクトを実行すると
|
11
|
+
0. プロジェクトを実行すると__FirestView__では__print(Array)__が実行されるが,__SecondView__へ画面遷移を行うと,__SecondView__では__print("error")__が実行される.
|
12
12
|
|
13
13
|
|
14
|
-
|
15
|
-
### 問題点
|
16
|
-
1月が__Cell__に表示されない.
|
17
|
-
インクリメントする月を変えても,そのインクリメントした月が表示されない.
|
18
|
-
(__print()__で__Log__を監視しても表示がない)
|
19
|
-
|
20
14
|
### コード1
|
21
15
|
__ViewController.swift__
|
22
16
|
```Swift
|
@@ -26,23 +20,37 @@
|
|
26
20
|
class ViewController: UIViewController {
|
27
21
|
|
28
22
|
var ref: DatabaseReference!
|
23
|
+
var value: Int = 0
|
29
24
|
|
30
25
|
|
31
26
|
|
32
27
|
override func viewDidLoad() {
|
33
28
|
super.viewDidLoad()
|
34
29
|
|
35
|
-
self.ref = Database.database().reference()
|
30
|
+
self.ref = Database.database().reference()
|
31
|
+
self.ref.observeSingleEvent(of: .value) { (DataSnapshot) in
|
32
|
+
guard let Array = DataSnapshot.value as? [String: Int] else {
|
33
|
+
print("error")
|
34
|
+
return
|
35
|
+
}
|
36
|
+
print(Array) //["値": 3]
|
37
|
+
}
|
36
38
|
}
|
37
39
|
|
38
40
|
|
39
41
|
|
42
|
+
@IBAction func increment(_ sender: UIButton) {
|
43
|
+
self.value += 1
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
|
40
48
|
override func viewWillDisappear(_ animated: Bool) {
|
41
49
|
super.viewWillDisappear(animated)
|
42
50
|
|
43
|
-
self.ref.child("
|
51
|
+
self.ref.child("値").runTransactionBlock { (MutableData) -> TransactionResult in
|
44
|
-
if let
|
52
|
+
if let value = MutableData.value as? Int {
|
45
|
-
MutableData.value =
|
53
|
+
MutableData.value = value + self.value
|
46
54
|
}
|
47
55
|
return TransactionResult.success(withValue: MutableData)
|
48
56
|
}
|
@@ -59,63 +67,60 @@
|
|
59
67
|
import UIKit
|
60
68
|
import Firebase
|
61
69
|
|
62
|
-
class
|
70
|
+
class SecondViewController: UIViewController {
|
63
71
|
|
64
|
-
@IBOutlet var list: UITableView!
|
65
72
|
var ref: DatabaseReference!
|
66
|
-
var rank = [(key: String, value: Int)]()
|
67
73
|
|
74
|
+
@IBOutlet weak var label: UILabel!
|
68
75
|
|
69
76
|
|
77
|
+
|
70
78
|
override func viewDidLoad() {
|
71
79
|
super.viewDidLoad()
|
72
|
-
|
73
|
-
self.ref = Database.database().reference().child("This")
|
74
|
-
self.ref.observeSingleEvent(of: .value) { (DataSnapshot) in
|
75
|
-
let namesArray = DataSnapshot.value as! [String: Int]
|
76
|
-
self.rank = namesArray.sorted {$0.value > $1.value}
|
77
|
-
self.list.reloadData()
|
78
|
-
}
|
79
80
|
}
|
80
81
|
|
81
82
|
|
82
83
|
|
83
|
-
override func
|
84
|
+
override func viewDidAppear(_ animated: Bool) {
|
84
|
-
|
85
|
+
super.viewDidAppear(animated)
|
86
|
+
|
87
|
+
self.ref = Database.database().reference()
|
88
|
+
self.ref.observeSingleEvent(of: .value) { (DataSnapshot) in
|
89
|
+
guard let Array = DataSnapshot.value as? [String: Int] else {
|
90
|
+
print("error") //error
|
91
|
+
self.label.text = "error"
|
92
|
+
return
|
93
|
+
}
|
94
|
+
print(Array)
|
95
|
+
if let value = Array["値"] {
|
96
|
+
self.label.text = String(value)
|
97
|
+
}
|
98
|
+
}
|
85
99
|
}
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
90
|
-
let cell = tableView.dequeueReusableCell(withIdentifier: "listCell", for: indexPath)
|
91
|
-
cell.textLabel?.text = self.rank[indexPath.row].key
|
92
|
-
cell.detailTextLabel?.text = String(self.rank[indexPath.row].value)
|
93
|
-
return cell
|
94
|
-
}
|
95
100
|
}
|
96
|
-
|
97
101
|
```
|
98
102
|
|
99
103
|
|
100
104
|
|
101
105
|
### 写真1
|
102
106
|
__Main.storyboard__
|
103
|
-

|
104
108
|
|
105
109
|
### 写真2
|
106
110
|
構成
|
107
|
-

|
108
112
|
|
109
113
|
### 写真3
|
110
114
|
__Firebase__
|
111
|
-

|
112
116
|
|
113
117
|
### 写真4
|
114
118
|
デバイス上
|
115
|
-

|
116
120
|
|
117
121
|
|
118
122
|
### 写真5
|
123
|
+
実際のアプリに近づけた構成
|
119
124
|

|
120
125
|
|
121
126
|
|
1
あ
title
CHANGED
File without changes
|
body
CHANGED
@@ -115,7 +115,11 @@
|
|
115
115
|

|
116
116
|
|
117
117
|
|
118
|
+
### 写真5
|
119
|
+

|
118
120
|
|
121
|
+
|
122
|
+
|
119
123
|
### 環境
|
120
124
|
xcode : ver11.0
|
121
125
|
Swift : ver5.1
|