我试图在 Swift 中遍历 ViewController 数组,但不幸的是我遇到了我不理解的编译错误。这是我的相关代码:
let alertController = UIAlertController(title: "Error", message: "You have an error.", preferredStyle: .Alert)
let OKAction = UIAlertAction(title: "OK", style: .Default) { (action:UIAlertAction!) in
print("you have pressed OK button");
//below is my loop causing me trouble
for (i in 0..< self.navigationController?.viewControllers.count) {
if (self.navigationController?.viewControllers[i].isKindOfClass(MyViewController) == true) {
self.navigationController?.popToViewController(self.navigationController!.viewControllers[i] as! MyViewController, animated: true)
break;
}
}
}
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true, completion:nil)
但是,我不断收到 Xcode 的错误消息,要求我在 for 循环语句中插入“,”作为分隔符。谁能看出我做错了什么?
最佳答案
为什么不在语法中使用 for... 而不是使用数字 for 循环?
if let navController = self.navigationController {
for aVC in navController.viewControllers {
if aVC..isKindOfClass(MyViewController) {
navController.popToViewController(aVC, animated: true)
break
}
}
}
我使用可选绑定(bind)将 self.navigationController?
折叠为 navController,并使用 for...in 语法。
此外,我认为您不需要将 View Controller 转换为 MyViewController
类,因为您使用它所做的只是将它发送给 popToViewController 函数,该函数需要任何 UIViewController
。
编辑:
如果您需要数组中项目的索引,您可以在数组上使用 enumerate
函数,它返回一组元组:
for (index, aVC) in navController.viewControllers.enumerate() {
//Do stuff
}
关于ios - Swift 中的 for 循环有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39170379/