Swift iOS - 如何在循环内的循环完成后执行完成

问题描述:

我在另一个循环内有循环,并且我希望内循环在两个循环完成后都运行完成块。Swift iOS - 如何在循环内的循环完成后执行完成

内环和完成:

func runThenPrint(_ count: Int, completion:()->()){ 
    for num in 0..<(count){ 
     print(num) 
    } 
    completion() 
} 

func imDone(){ 
    print("DONE") 
} 

外环与内环和完成:

//outer 
for num in 0..<5{ 
    //inner 
    runThenPrint(num){imDone} 
} 

在操场我越来越:

DONE 
0 
DONE 
0 
1 
DONE 
0 
1 
2 
DONE 
0 
1 
2 
3 
DONE 

但我想:

0 
1 
2 
3 
4 
DONE 

我看了这篇文章link,但它是基于1循环,而不是循环内的循环。我还发现其他群组的帖子,但他们都是基于网络电话。

让这个运行的最好方法是什么?

+0

你的代码不能编译。请显示您的真实代码。 – paper1111

+2

外环的目的是什么?你可以用'runThenPrint(5,completion:imDone)'得到所需的输出。 –

+0

@ paper1111在count变量的末尾有一个额外的右括号。 –

你得到的是完全正常的。请记住,重复调用for循环。所以for num in 0..<5将使它运行4次。在第一时间,num是0,所以

for num in 0..<(count)){ 
     print(num) 
} 

打印什么,然后立即调用完成处理程序,打印“DONE”。第二次,num为1,因此内循环将运行1次并打印0,然后打印“完成”等等。

所需的输出可以通过使用

runThenPrint(5, completion: imDone) 

,你只是想“内部” for循环运行5次来实现。

+0

我已经知道我可以使用内部循环本身。不过谢谢 –