回答編集履歴

3

コードの修正

2019/11/18 11:27

投稿

hayabusabusash
hayabusabusash

スコア767

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  // ドキュメントの内容を取り出す
60
60
 
61
-      if let data = documentSnapshot.data() {
61
+      if let data = documentSnapshot?.data() {
62
62
 
63
63
  let groupName = data["groupname"] as? String
64
64
 
@@ -130,7 +130,7 @@
130
130
 
131
131
  // ドキュメントの内容を取り出す
132
132
 
133
-       if let data = documentSnapshot.data() {
133
+ if let data = documentSnapshot?.data() {
134
134
 
135
135
  // 強制キャストにしました
136
136
 

2

コードを修正

2019/11/18 11:27

投稿

hayabusabusash
hayabusabusash

スコア767

test CHANGED
@@ -108,6 +108,8 @@
108
108
 
109
109
 
110
110
 
111
+ // ここに追加
112
+
111
113
  database.collection("group")
112
114
 
113
115
  .document("groupname")
@@ -130,7 +132,7 @@
130
132
 
131
133
        if let data = documentSnapshot.data() {
132
134
 
133
- // 強制アンラップにしました
135
+ // 強制キャストにしました
134
136
 
135
137
  let storedGroupName = data["groupname"] as! String
136
138
 

1

コードを追加する場所について追記

2019/11/17 16:34

投稿

hayabusabusash
hayabusabusash

スコア767

test CHANGED
@@ -81,3 +81,95 @@
81
81
  とりあえず両方とも`String?`にしておきました。
82
82
 
83
83
  Firestoreの構成が違ったり、フィールド名が違ったりしたら教えてください????‍♂️
84
+
85
+
86
+
87
+ ## 2019/11/17追記(コードを追加する場所について)
88
+
89
+
90
+
91
+ `didTapSignUpButton()`の中でいいと思います。
92
+
93
+ 非同期処理が続くので、`self`のキャプチャーに気をつけてください。([参考](https://qiita.com/_tid_/items/df7f1b76f156bd758c1a))
94
+
95
+
96
+
97
+ ```Swift
98
+
99
+ @IBAction private func didTapSignUpButton() {
100
+
101
+ let email = emailTextField.text ?? ""
102
+
103
+ let password = passwordTextField.text ?? ""
104
+
105
+ let name = nameTextField.text ?? ""
106
+
107
+ let groupname = groupnameTextField.text ?? ""
108
+
109
+
110
+
111
+ database.collection("group")
112
+
113
+ .document("groupname")
114
+
115
+ .getDocument { [weak self] (documentSnapshot, error) in
116
+
117
+ guard let self = self else { return }
118
+
119
+
120
+
121
+ if let error = error {
122
+
123
+ print(error)
124
+
125
+ }
126
+
127
+
128
+
129
+ // ドキュメントの内容を取り出す
130
+
131
+       if let data = documentSnapshot.data() {
132
+
133
+ // 強制アンラップにしました
134
+
135
+ let storedGroupName = data["groupname"] as! String
136
+
137
+ let storedGroupPassword = data["grouppassword"] as! String
138
+
139
+
140
+
141
+ // Firestore側のデータとテキストフィールドの値を比較
142
+
143
+ if groupname == storedGroupName && password == storedGroupPassword {
144
+
145
+ // Authの処理
146
+
147
+ Auth.auth().createUser(withEmail: email, password: password) { [weak self] result, error in
148
+
149
+ guard let self = self else { return }
150
+
151
+
152
+
153
+ // 後の処理は同じなので省略します
154
+
155
+ }
156
+
157
+ }
158
+
159
+ } else {
160
+
161
+ // Firestore側のgroupNameとgroupPasswordが一致しない時の処理
162
+
163
+ }
164
+
165
+ }
166
+
167
+ }
168
+
169
+ ```
170
+
171
+
172
+
173
+ 一応質問に貼っていただいたコードと変数名とかを合わせたつもりですが、
174
+
175
+ 動かなかったりしたら教えてください????‍♂️