为 for in 循环添加 break 或 continue 语句
Adding a break or continue statement for a for in loop
我有一个 for in 循环,它遍历多个对象,当它在循环中找到某个值时,我希望弹出一个 popUpViewController 并显示一些信息,然后一旦用户关闭了 popUpViewController,我然后希望迭代继续,如果它再次找到另一个值再次弹出,依此类推,直到迭代完成,这是我的代码以及我要做的事情,但我不知道该怎么做它。代码:
var popUpViewController = PopUpViewControllerSwift(
var results = [1,2,3,1,2,3,1,2,3]
for result in results {
if result == 2 {
self.view.addSubview(self.popUpViewController.view)
self.addChildViewController(self.popUpViewController)
self.popUpViewController.setValues(UIImage(named: "Me.png"), messageText: "You have matched with \(usernameOne)!", congratsText: "Snap!")
self.popUpViewController.didMoveToParentViewController(self)
}
}
这已经被简化到重点。
关闭 PopUpViewControllerSwift
后,您将需要继续从上一个索引开始计算。 [你需要一种方法来识别弹出控制器何时被关闭——根据你的具体设计,在 UIKit 中有很多方法可以做到这一点。例如,在 viewDidDisappear()
] 中。要从最后一个索引继续,请定义一个函数,该函数接受该索引,进行匹配,然后使用 index + 1
递归调用自身以继续。
let processFrom : ((index:Int) -> Void)!
processFrom = {(index:Int) -> Void) in
if index < results.count {
let result = results[index]
if result == 2 {
// setup view
// provide the continuation - assumes `onDismiss` is defined
// as a closure to be used when the view is dismissed.
self.popupViewController.onDismiss = { processFrom (index + 1) }
}
else { processFrom (index + 1) }
}
}
此 processFrom
捕获 results
变量并根据提供的 index
.
重复处理来自 results
的元素
注意:关于递归函数,Swift 不是很 swift;因此使用 processFrom
作为隐式展开的可选。根据您的代码,如果 processFrom
是 class/struct 中的一个函数,那么您只需使用 func
.
就可以避免这种风格
我有一个 for in 循环,它遍历多个对象,当它在循环中找到某个值时,我希望弹出一个 popUpViewController 并显示一些信息,然后一旦用户关闭了 popUpViewController,我然后希望迭代继续,如果它再次找到另一个值再次弹出,依此类推,直到迭代完成,这是我的代码以及我要做的事情,但我不知道该怎么做它。代码:
var popUpViewController = PopUpViewControllerSwift(
var results = [1,2,3,1,2,3,1,2,3]
for result in results {
if result == 2 {
self.view.addSubview(self.popUpViewController.view)
self.addChildViewController(self.popUpViewController)
self.popUpViewController.setValues(UIImage(named: "Me.png"), messageText: "You have matched with \(usernameOne)!", congratsText: "Snap!")
self.popUpViewController.didMoveToParentViewController(self)
}
}
这已经被简化到重点。
关闭 PopUpViewControllerSwift
后,您将需要继续从上一个索引开始计算。 [你需要一种方法来识别弹出控制器何时被关闭——根据你的具体设计,在 UIKit 中有很多方法可以做到这一点。例如,在 viewDidDisappear()
] 中。要从最后一个索引继续,请定义一个函数,该函数接受该索引,进行匹配,然后使用 index + 1
递归调用自身以继续。
let processFrom : ((index:Int) -> Void)!
processFrom = {(index:Int) -> Void) in
if index < results.count {
let result = results[index]
if result == 2 {
// setup view
// provide the continuation - assumes `onDismiss` is defined
// as a closure to be used when the view is dismissed.
self.popupViewController.onDismiss = { processFrom (index + 1) }
}
else { processFrom (index + 1) }
}
}
此 processFrom
捕获 results
变量并根据提供的 index
.
results
的元素
注意:关于递归函数,Swift 不是很 swift;因此使用 processFrom
作为隐式展开的可选。根据您的代码,如果 processFrom
是 class/struct 中的一个函数,那么您只需使用 func
.