无法将类型 '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
}
我创建了一个数组,如下所示
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
}