【问题标题】:Swift: Cannot subscript a value of type '[UIViewController]?'Swift:无法下标“[UIViewController]?”类型的值
【发布时间】:2023-03-22 01:03:01
【问题描述】:

我试图弄清楚如何在 Xcode 7 (iOS9) 上的 Swift 中解决这个问题,我也遇到了这个错误:

无法为“[UIViewController] 类型的值下标?”具有“Int”类型的索引

任何建议表示赞赏。谢谢。

我的代码:

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
}

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

    试试:

    let currentViewController = pageViewController.viewControllers![0]
    

    不过,这样写会更安全:

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

    另一种选择:

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

    这样做的好处是它是安全的,但不需要将函数的其余部分放在 if 块中。

    【讨论】:

    • 注意不用再低调了; Swift 2.0 知道这是一个 UIViewControllers 数组!
    • 另外,pageViewController.viewControllers?.first 可以让您避免出现“索引越界”异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多