下面我试图获取ArraySlice
draggignFan
的第I个元素。代码构建得很好(没有警告),但程序在运行时在我试图像普通数组那样索引切片的行上终止:
var draggingFan : ArraySlice<Card>?
...
if let draggingFan = draggingFan {
for i in 1 ..< draggingFan.count {
let card = draggingFan[i] // EXECUTION ERROR HERE
...
}
}
根据the docs有一个
first
和last
方法(我在其他地方使用,没有问题)。那么如何在Swift中索引anArraySlice
?(注意:我有意跳过切片中的第0个索引——这在其他地方是需要的)。 最佳答案
ArraySlice
的索引仍然与原始数组的索引匹配。在您的例子中,您访问的索引1
不在您的切片中。如果您用draggingFan.startIndex
偏移索引,它将起作用:
if let draggingFan = draggingFan {
for i in 1 ..< draggingFan.count {
let card = draggingFan[draggingFan.startIndex + i]
...
}
}
或者:
if let draggingFan = draggingFan {
for i in draggingFan.startIndex + 1 ..< draggingFan.endIndex {
let card = draggingFan[i]
...
}
}
关于arrays - 如何从Swift ArraySlice获取第i个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36457811/