【发布时间】:2016-04-13 15:39:53
【问题描述】:
也许我在理解整体前提上有一个潜在的问题,但我正在尝试找出用一组项目做某事并结束测试的最佳方法> 一旦找到某个标准,就尽早。
例如,我有一个名称数组;var names = ["Bob", "Billy", "Sarah", "Brandon", "Brian", "Rick"]
我想测试数组中的每个名称,看看它是否存在于数据库中。为此,我使用完成处理程序调用另一个函数;
for name in names {
TestName(name) { response in
if response {
// END THE LOOP
} else {
// KEEP GOING
}
}
我无法弄清楚 // END THE LOOP。就本示例而言,我只关心第一次响应为真时(如果数组中存在比利,我对测试 Sarah、Brandon、Brian 或 Rick 没有进一步的兴趣)。
谢谢!
【问题讨论】:
-
抱歉我的回答不好。这里的问题是你在一个我没有注意到的街区。 :)
-
顺便说一下,如果 TestName 的完成处理程序是异步的,那么您确实对您的整体前提有潜在的问题!
-
仅供参考,如果这是同步的,你不应该使用闭包,如果它是异步的,你不能指望使用 for 循环你想要的行为
-
TestName是异步方法吗?还是同步的?如果是同步的,则有比闭包模式更好、更简单的模式。如果是异步的(正如人们可能从“完成处理程序”术语中推断出来的那样),那么需要一些非常非常不同的东西(例如,一些复杂的设计来取消其他任务)。
标签: arrays swift loops completionhandler