回答編集履歴

1

表現の修正と追記

2020/10/07 11:10

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -249,3 +249,51 @@
249
249
 
250
250
 
251
251
  上記の実装は、あくまでも「データは必ず到着する」という前提での実装ですが、当然ネットワークトラブルなどでデータが到着しない、タイムアウトする、データが壊れているというエラーが発生することも考えられるので、そのような場合には、`completionHandler:`に加えて、`errorHandler:` も渡してエラー時の処理を記述する方が当然良いかと思います。
252
+
253
+
254
+
255
+
256
+
257
+ ###2020/10/07追記
258
+
259
+
260
+
261
+ > ただ、両者について、現在見えている範囲での実装で言えることは、「非同期処理を行なっていないのではないか」ということです。
262
+
263
+
264
+
265
+ 表現が適切でない可能性がありましたので訂正します。
266
+
267
+
268
+
269
+ 『非同期処理の「逐次処理」を行なっていないのではないか』の方が正確かもしれません。
270
+
271
+
272
+
273
+ 本来の流れとしては、
274
+
275
+ - `loadInfo()` で標高データなどを取り込む
276
+
277
+ - 取り込みが完了した時点で tableView を表示する
278
+
279
+ - 表示したデータで tableView を更新する
280
+
281
+
282
+
283
+ が望ましい形かと思うのですが、おそらく今回の実装では
284
+
285
+
286
+
287
+ - `loadInfo()` で標高データなどを取り込む(かつ、おそらくデータ取得完了の時点で `reloadData()`を実行している)
288
+
289
+ - 仮のデータで tableView を更新する
290
+
291
+ - 結果として、tableView が表示されたあとに最新情報で更新される
292
+
293
+
294
+
295
+ という流れになってしまっているのだと思います。
296
+
297
+
298
+
299
+ `DispatchQueue` を追加したがうまくいかなかった、というのは、おそらく非同期処理を逐次的に処理させたかったのだと推測されますが、当初の実装ではうまくいっていないのだと思われます。