Ios Swift中的for循环有问题

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

我试图在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)
让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
}