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


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

Another alternative:

guard let currentViewController = pageViewController.viewControllers?[0] else { 
// ... 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.