hightech hightech - 5 months ago 11
iOS Question

Swift: Cannot subscript a value of type '[UIViewController]?'

I am trying to figure out how to fix this issue in Swift on Xcode 7 (iOS9) and I am also having this error:


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


Any suggestion appreciated. Thanks.

enter image description here

My code:

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
}

Answer

Try:

let currentViewController = pageViewController.viewControllers![0]

It would be safer, though, to write:

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

Another alternative:

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

This has the advantage that it's safe but there's no need to put the remainder of the function inside an if block.