我有这个数组:
var currentTouches = [UITouch]()
在任何时候,它可能包含0-5 UITouch
es。我想检查每个索引并对内容执行某些操作(如果存在)。
但是我找不到一种方法来检查而不会收到错误。问题似乎是,UITouch
不是可选的,所以我不能问它是否可以是nil
。
我该怎么办?我尝试将它作为可选项,但这使我的其他代码变得异常。当然必须有一个简单的解决方案。
答案 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
}