ios - Swift 中的 for 循环有问题

标签 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: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/

相关文章:

ios - 如何在iOS应用程序中本地创建 "web forms"?

swift - 如何解码可以是 String 或 NSNumber 的 JSON 值?

swift - 创建 plist 并将其复制到文件夹 MacOS Swift

ios - 在 swift 中使用协议(protocol)作为数组类型和函数参数

c# - 不知道如何阅读此方法

android - 为手机或平板电脑充电时的能量流入

ios - 构建 iOS .framework,其中包含适用于所有架构的 PLCrashReporter 依赖项目

java - 在 ArrayList 中找到最大的不重复数

java - 没有得到矩阵JAVA主对角线所需的输出

ios - 在 iOS swift 中创建一个保存在 Parse 中的计数器