选择数组中的中间值 - Swift

Con*_*rry 4 arrays uipageviewcontroller swift

我试图确保中间值 Lists 是构建我的应用程序时看到的第一个视图。Xcode 提供if let firstView = viewList.firstif let firstView = viewList.last但我无法练习如何选择中间值。

lazy var viewList:[UIViewController] = {
    let sb = UIStoryboard(name: "Main", bundle: nil)

    let lists = sb.instantiateViewController(withIdentifier: "Lists")
    let reminders = sb.instantiateViewController(withIdentifier: "Reminders")
    let todo = sb.instantiateViewController(withIdentifier: "To Do")

    return [reminders, lists, todo]
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.dataSource = self

    if let firstView = viewList.first {
        self.setViewControllers([firstView], direction: .forward, animated: true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

sta*_*Man 6

firstand类似last,您可以Array使用middle返回一个 optional的计算属性进行扩展Element

extension Array {

    var middle: Element? {
        guard count != 0 else { return nil }

        let middleIndex = (count > 1 ? count - 1 : count) / 2
        return self[middleIndex]
    }

}
Run Code Online (Sandbox Code Playgroud)

用法示例:

if let middleView = viewList.middle {
    //... Do something
}
Run Code Online (Sandbox Code Playgroud)

我希望您知道,如果数组只有 1 个元素first,则last可以返回相同的元素。

类似地,虽然此扩展适用于任何数组长度,但它可以返回相同的元素:

  • first, middle&last如果您的数组只有 1 个元素
  • middle&last如果您的数组只有 2 个元素