2017-02-09 32 views
0

我已创建了一个阵列像下面无法将类型的“任意”值指定的类型在迅速

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] 
} 

但我正在逐渐下面误差

夫特-CarAssist /夫特-CarAssist/OBDCarMonitorDeatilViewController.swift:90:67:无法将类型 '任意' 到指定的类型“的值OBDPage1ViewCont滚筒?'

任何人都可以告诉我我要去哪里,因为我是新来的swift。

在此先感谢。 普里

回答

3

在斯威夫特工作,你可能使用雨燕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 

} 
+0

谢谢你工作完美,因为我想要的。 :) – Priyanka

1

试试这个:

let controller = childControllers[page] as! OBDPage1ViewController 

你必须明确地投数组值作为OBDPage1ViewController,否则它只是Any型。

编辑:

更安全,建议您执行此使用IF-让有条件的约束力。

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

请不建议使用'!'作为第一个解决方案,使用'作为“这更安全并处理错误。 – Alistra

+0

第二回票是什么?请至少指出,如果您打算回答答案,您认为我可以改进。 –

相关问题