在Swift中使用Int类型与IndexPath类型

时间:2017-02-22 12:39:28

标签: ios swift nsindexpath

我正在编写一本教程书,我对如何在Swift中访问数组有疑问。我很想知道如果直接使用IndexPath类型会发生什么,因为我假设这种类型表示树或数组中特定节点的路径。但是,以下函数在返回的行上显示错误:"Cannot subscript value of type [ToDoItem] with an index of type IndexPath"

func item(at indexIWant: IndexPath) -> ToDoItem {

        return toDoItems[indexIWant]
    }

我只是很想知道这在外行人的意义上是什么意思,为什么这不可接受?

以下是本教程中的代码,它编译使用Int类型而不是类型IndexPath。

import Foundation


class ItemManager {

    var toDoCount: Int = 0

    var doneCount: Int = 0

    private var toDoItems: [ToDoItem] = []

    func add(_ item: ToDoItem) {

        toDoCount += 1

        toDoItems.append(item)
    }


    func item(at index: Int) -> ToDoItem {

        return toDoItems[index]

    }
}

1 个答案:

答案 0 :(得分:3)

因为subscript需要Int,而您传递的IndexPath不属于Int类型。

如果查看Apple IndexPath DocumentationIndexPath的{​​{1}}或row属性类型为section。您可以使用它们来访问阵列中的元素。

Int

如果您确实想要使用func item(at indexIWant: IndexPath) -> ToDoItem { return toDoItems[indexIWant.row] } 访问数组,则可以扩展Array类。现在您的代码已编译但我不确定是否推荐此代码。

IndexPath