检查非可选Array中是否存在索引

时间:2017-06-05 13:11:36

标签: arrays swift xcode optional

我有这个数组:

var currentTouches = [UITouch]()

在任何时候,它可能包含0-5 UITouch es。我想检查每个索引并对内容执行某些操作(如果存在)。

但是我找不到一种方法来检查而不会收到错误。问题似乎是,UITouch不是可选的,所以我不能问它是否可以是nil

我该怎么办?我尝试将它作为可选项,但这使我的其他代码变得异常。当然必须有一个简单的解决方案。

1 个答案:

答案 0 :(得分:1)

currentTouches的有效索引只是currentTouches.indices。因此,要检查索引i是否有效,您可以检查if currentTouches.indices.contains(i)。您还可以检查if i < currentTouches.count(假设您已经知道i >= 0)。

更简单的方法是循环有效索引并依次处理每个索引:

for index in currentTouches.indices {
    // handle value at index
}

或者,如果您不关心指数:

for touch in currentTouches {
    // handle touch
}

更好的是使用enumerated(),它会为你提供一个包含索引和值的元组:

for (index, touch) in currentTouches.enumerated() {
    // handle touch at index
}