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

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