Ios Swift中的for循环有问题
我试图在Swift中迭代ViewController数组,但不幸的是,我得到了我不理解的编译错误。这是我的相关代码:Ios Swift中的for循环有问题,ios,swift,for-loop,Ios,Swift,For Loop,我试图在Swift中迭代ViewController数组,但不幸的是,我得到了我不理解的编译错误。这是我的相关代码: let alertController = UIAlertController(title: "Error", message: "You have an error.", preferredStyle: .Alert) let OKAction = UIAlertAction(title: "OK", style: .Default) { (action:UIAlertAct
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)
让alertController=UIAlertController(标题:“错误”,消息:“您有错误”,首选样式:。警报)
让OKAction=UIAlertAction(标题:“OK”,样式:。默认值){(操作:UIAlertAction!)在
打印(“您已按下确定按钮”);
//下面是我的循环给我带来的麻烦
对于(0中的i..
然而,我不断从Xcode得到错误,要求我在for循环语句中插入“,”作为分隔符。有人知道我做错了什么吗?在
周围的间距不一致。只需从for循环中删除括号,并在0
和self
之间添加适当的间距:-
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;
}
}
0中i的。 < /代码> 从<<代码>中删除括号内的< < /代码>循环,<代码> 0中的额外空间.<自我> ./COD>并考虑解开链中可选计数的值。 而不是使用数值循环,为什么不使用…在语法上
if let navController = self.navigationController {
for aVC in navController.viewControllers {
if aVC..isKindOfClass(MyViewController) {
navController.popToViewController(aVC, animated: true)
break
}
}
}
我使用可选绑定将self.navigationController?
折叠到navController中,并在语法上为…折叠
另外,我认为您不需要将视图控制器强制转换为MyViewController
类,因为您所做的只是将其发送到popToViewController函数,该函数接受任何UIViewController
编辑:
如果需要数组中项目的索引,可以在数组上使用枚举
函数,该函数返回一组元组:
for (index, aVC) in navController.viewControllers.enumerate() {
//Do stuff
}
这仍然会输出一个插入逗号的错误。您需要删除括号。@EricAya==true
对于可选布尔值实际上有一定的意义,不过,使用?
可能更好,但这只是一个意见问题。除非您确实需要访问索引变量本身,否则这是最直接、最正确的方法。如果您也想使用索引索引,您可以在navController.viewControllers.enumerate()中使用for(index,aVC)
if let navController = self.navigationController {
for aVC in navController.viewControllers {
if aVC..isKindOfClass(MyViewController) {
navController.popToViewController(aVC, animated: true)
break
}
}
}
for (index, aVC) in navController.viewControllers.enumerate() {
//Do stuff
}