无法将类型 'Any' 的值转换为 swift 中的指定类型

Cannot convert value of type 'Any' to specified type in swift

我创建了一个数组,如下所示

var childControllers = NSArray()
childControllers = NSArray(objects: OBDPage1, OBDPage2, OBDPage3, OBDPage4)
self.loadScrollView(page: 0)// calling method

现在我想像下面那样使用数组对象

func loadScrollView(page: Int){ // method
    if page >= childControllers.count {
        return
    }
    // replace the placeholder if necessary
    let controller: OBDPage1ViewController? = childControllers[page]
}

但我遇到了以下错误

Swift-CarAssist/Swift-CarAssist/OBDCarMonitorDeatilViewController.swift:90:67: Cannot convert value of type 'Any' to specified type 'OBDPage1ViewController?'

任何人都可以告诉我哪里出错了,因为我是 swift 的新手。

提前致谢。 朴雅卡

试试这个:

let controller = childControllers[page] as! OBDPage1ViewController

您必须将数组值显式转换为 OBDPage1ViewController,否则它只是 Any.

类型

编辑:

为了更安全,建议您使用 if-let 条件绑定执行此操作。

if let controller = childControllers[page] as? OBDPage1ViewController {
    //do something    
}

在 Swift 工作,您应该使用 Swift Array 而不是 NSArray

var childControllers = [UIViewController]()
childControllers = [OBDPage1,OBDPage2,OBDPage3,OBDPage4]
self.loadScrollView(page: 0)// calling method

然后

func loadScrollView(page: Int){ // method

    if page >= childControllers.count {
        return
    }

    // replace the placeholder if necessary
    let controller = childControllers[page] as? OBDPage1ViewController

}