我创建了一个如下所示的数组
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:无法将'Any'类型的值转换为指定类型'OBDPage1ViewController?'
任何人都可以告诉我自己哪里出错了,因为我是swift的新手。
提前致谢。 普里
答案 0 :(得分:3)
在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
}
答案 1 :(得分:2)
试试这个:
let controller = childControllers[page] as! OBDPage1ViewController
您必须将数组值显式地转换为OBDPage1ViewController
,否则它只是Any
类型。
修改强>
为了更安全,建议您使用if-let条件绑定执行此操作。
if let controller = childControllers[page] as? OBDPage1ViewController {
//do something
}