回答編集履歴

1

丸投げ

2019/10/28 08:10

投稿

fuzzball
fuzzball

スコア16733

test CHANGED
@@ -1 +1,59 @@
1
1
  enter/async/leaveの位置がおかしいです。ループの中に入れて下さい。
2
+
3
+
4
+
5
+ ---
6
+
7
+
8
+
9
+ 無事に解決できたようなのでコードを書いておきます。(**Kapustin**さんの回答から、ダミーデータ周りのコードをお借りしてます)
10
+
11
+
12
+
13
+ ```swift
14
+
15
+ var List: [Int] = []
16
+
17
+ for i in 0..<10 {
18
+
19
+ List.append(i)
20
+
21
+ }
22
+
23
+
24
+
25
+ let dispatchGroup = DispatchGroup()
26
+
27
+ let dispatchQueue = DispatchQueue(label: "queue", attributes: .concurrent)
28
+
29
+
30
+
31
+ // 非同期処理を実行
32
+
33
+ List.forEach { (value) in
34
+
35
+ dispatchGroup.enter()
36
+
37
+ dispatchQueue.async(group: dispatchGroup) {
38
+
39
+ Thread.sleep(forTimeInterval: Double.random(in: 1..<2))
40
+
41
+ print(value)
42
+
43
+ dispatchGroup.leave()
44
+
45
+ }
46
+
47
+ }
48
+
49
+
50
+
51
+ // 全ての非同期処理完了後にメインスレッドで処理
52
+
53
+ dispatchGroup.notify(queue: .main) {
54
+
55
+ print("All Process Done!")
56
+
57
+ }
58
+
59
+ ```