下面我试图获取ArraySlicedraggignFan的第I个元素。代码构建得很好(没有警告),但程序在运行时在我试图像普通数组那样索引切片的行上终止:

var draggingFan : ArraySlice<Card>?
...

if let draggingFan = draggingFan {
     for i in 1 ..< draggingFan.count {
         let card = draggingFan[i] // EXECUTION ERROR HERE
         ...
     }
 }

根据the docs有一个firstlast方法(我在其他地方使用,没有问题)。那么如何在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/

10-11 19:00