我正在编写一本教程书,我对如何在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]
}
}
答案 0 :(得分:3)
因为subscript
需要Int
,而您传递的IndexPath
不属于Int
类型。
如果查看Apple IndexPath Documentation,IndexPath
的{{1}}或row
属性类型为section
。您可以使用它们来访问阵列中的元素。
Int
如果您确实想要使用func item(at indexIWant: IndexPath) -> ToDoItem {
return toDoItems[indexIWant.row]
}
访问数组,则可以扩展Array类。现在您的代码已编译但我不确定是否推荐此代码。
IndexPath