hightech hightech - 1 year ago 52
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 Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download