2015-06-16 24 views
6

我試圖找出如何在雨燕上的Xcode 7(iOS9)解決這個問題,我也有這個錯誤:Swift:不能下標'[UIViewController]'類型的值嗎?'

Cannot subscript a value of type '[UIViewController]?' with an index of type 'Int'

知道的任何建議。謝謝。

enter image description here

我的代碼:

func indexPositionForCurrentPage(pageViewController: UIPageViewController) -> Int { 

    let currentViewController = pageViewController.viewControllers[0] as UIViewController 

    for (index, page) in pages.enumerate() { 
     if (currentViewController == page) { 

      return index 
     } 
    } 

    return -1 
} 

回答

8

嘗試:

let currentViewController = pageViewController.viewControllers![0] 

這將是更安全的,但是,這樣寫:

if let currentViewController = pageViewController.viewControllers?[0] { 
    // ... and then do everything else in the if-block 
end 

另一種選擇:

guard let currentViewController = pageViewController.viewControllers?[0] else { 
    return 
} 
// ... and then just proceed to use currentViewController here 

這樣做的好處在於它是安全的,但沒有必要把該功能的其餘部分的if塊內。

+0

請注意,沒有必要再宕機; Swift 2.0知道這是一個UIViewControllers數組! – matt

+0

另外'pageViewController.viewControllers?.first'可以讓你避免出現「索引越界」異常。 – ozgur

相關問題