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

我查看了此帖子链接,但它基于1个循环,而不是循环中的循环。我还发现了小组上的其他帖子,但它们是基于网络调用的。

让它运行的最佳方法是什么?

您得到的是完全正常的。请记住,一个用于循环的电话反复打电话。因此,for num in 0..<5将使它运行4次。在第一次,num为0,所以

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

什么也没打印,然后立即调用完成处理程序,该处理程序打印为"完成"。在第二次,num为1,因此循环的内部循环将运行1次并打印0,然后在so上打印"完成"。

可以使用

来实现所需的输出
runThenPrint(5, completion: imDone)

您只想运行5次"内部"循环。

最新更新