質問編集履歴
1
3つ目のコードのif文が「if countB == checkCount {」になっていたので「if countB == checkCountB {」に直しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -132,19 +132,123 @@
|
|
132
132
|
|
133
133
|
if countB == checkCountB {
|
134
134
|
|
135
|
+
checkCountB += 1
|
136
|
+
|
137
|
+
// 時間遅れに揺らぎ(0.5秒から1.0秒の間)を与える
|
138
|
+
|
139
|
+
let delay = Double.random(in: 0.5...1.0)
|
140
|
+
|
141
|
+
dispatchQueue.asyncAfter(deadline: .now() + delay) {
|
142
|
+
|
143
|
+
print("countB: (countB)")
|
144
|
+
|
145
|
+
countB += 1
|
146
|
+
|
147
|
+
}
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
```
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
以下がプリントされます。
|
158
|
+
|
159
|
+
```
|
160
|
+
|
161
|
+
countB: 0
|
162
|
+
|
163
|
+
countB: 1
|
164
|
+
|
165
|
+
countB: 2
|
166
|
+
|
167
|
+
countB: 3
|
168
|
+
|
169
|
+
```
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
このように、条件が無視されて処理が続くのはどのようなときなのか、
|
174
|
+
|
175
|
+
その対処法などありましたら教えていただきたく思います。
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
### 具体的なこと
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
質問内容は上記で以上なのですが、念のため実際に使っている部分も掲載します。
|
186
|
+
|
187
|
+
(ややこしいので読み飛ばしていただいても大丈夫だと思います)
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
データベースにIDを保存する処理([前回の質問](https://teratail.com/questions/297117))を、
|
192
|
+
|
193
|
+
1人目、1人目が終わったら2人目……と順番にやりたかったので、以下のように書いています。
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
```Swift
|
198
|
+
|
199
|
+
var planIDsOnDatabase = [String]() // メンバ変数で定義しています
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
// ---------- ↓実際の処理 ----------
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
var everyone = ["sample01", "sample02", "sample03"]
|
208
|
+
|
209
|
+
print("everyoneの要素数: (everyone.count)") // 3
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
var count = 0
|
214
|
+
|
215
|
+
var checkCount = 0
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
while count < everyone.count {
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
if count == checkCount {
|
224
|
+
|
135
225
|
checkCount += 1
|
136
226
|
|
137
|
-
// 時間遅れに揺らぎ(0.5秒から1.0秒の間)を与える
|
138
|
-
|
139
|
-
l
|
227
|
+
planIDsOnDatabase.removeAll()
|
140
|
-
|
141
|
-
|
228
|
+
|
142
|
-
|
229
|
+
|
230
|
+
|
143
|
-
|
231
|
+
print("count: (count)")
|
232
|
+
|
144
|
-
|
233
|
+
fetchPlanIDs(accountID: everyone[count], completion: {
|
234
|
+
|
235
|
+
// データベースの予定ID取得後に新たなIDを追加
|
236
|
+
|
237
|
+
self.planIDsOnDatabase.append(planID)
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
// 次の処理(データベースに保存)
|
242
|
+
|
243
|
+
self.addPlanIDToDatabase(accountID: everyone[count], newPlanID: planID, completion: {
|
244
|
+
|
245
|
+
// データベースに予定ID保存後、次の人へ
|
246
|
+
|
145
|
-
count
|
247
|
+
count += 1
|
146
|
-
|
248
|
+
|
147
|
-
}
|
249
|
+
})
|
250
|
+
|
251
|
+
})
|
148
252
|
|
149
253
|
}
|
150
254
|
|
@@ -152,110 +256,6 @@
|
|
152
256
|
|
153
257
|
```
|
154
258
|
|
155
|
-
|
156
|
-
|
157
|
-
以下がプリントされます。
|
158
|
-
|
159
|
-
```
|
160
|
-
|
161
|
-
countB: 0
|
162
|
-
|
163
|
-
countB: 1
|
164
|
-
|
165
|
-
countB: 2
|
166
|
-
|
167
|
-
countB: 3
|
168
|
-
|
169
|
-
```
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
このように、条件が無視されて処理が続くのはどのようなときなのか、
|
174
|
-
|
175
|
-
その対処法などありましたら教えていただきたく思います。
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
### 具体的なこと
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
質問内容は上記で以上なのですが、念のため実際に使っている部分も掲載します。
|
186
|
-
|
187
|
-
(ややこしいので読み飛ばしていただいても大丈夫だと思います)
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
データベースにIDを保存する処理([前回の質問](https://teratail.com/questions/297117))を、
|
192
|
-
|
193
|
-
1人目、1人目が終わったら2人目……と順番にやりたかったので、以下のように書いています。
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
```Swift
|
198
|
-
|
199
|
-
var planIDsOnDatabase = [String]() // メンバ変数で定義しています
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
// ---------- ↓実際の処理 ----------
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
var everyone = ["sample01", "sample02", "sample03"]
|
208
|
-
|
209
|
-
print("everyoneの要素数: (everyone.count)") // 3
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
var count = 0
|
214
|
-
|
215
|
-
var checkCount = 0
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
while count < everyone.count {
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
if count == checkCount {
|
224
|
-
|
225
|
-
checkCount += 1
|
226
|
-
|
227
|
-
planIDsOnDatabase.removeAll()
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
print("count: (count)")
|
232
|
-
|
233
|
-
fetchPlanIDs(accountID: everyone[count], completion: {
|
234
|
-
|
235
|
-
// データベースの予定ID取得後に新たなIDを追加
|
236
|
-
|
237
|
-
self.planIDsOnDatabase.append(planID)
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
// 次の処理(データベースに保存)
|
242
|
-
|
243
|
-
self.addPlanIDToDatabase(accountID: everyone[count], newPlanID: planID, completion: {
|
244
|
-
|
245
|
-
// データベースに予定ID保存後、次の人へ
|
246
|
-
|
247
|
-
count += 1
|
248
|
-
|
249
|
-
})
|
250
|
-
|
251
|
-
})
|
252
|
-
|
253
|
-
}
|
254
|
-
|
255
|
-
}
|
256
|
-
|
257
|
-
```
|
258
|
-
|
259
259
|
条件式```while count < everyone.count```から、0〜2までの3回実行させたいのですが、意図せず4回目が実行されてしまいエラーになります。
|
260
260
|
|
261
261
|
|