Swift: Cannot subscript a value of type '[UIVi

2019-06-18 05:06发布

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
}

1条回答
三岁会撩人
2楼-- · 2019-06-18 06:06

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.

查看更多
登录 后发表回答