我有这个阵列:
var currentTouches = [UITouch]()
在任何时候,它都可能含有0-5
UITouch
es。我想检查每个索引,如果内容存在,就做一些事情。但是我找不到一个不出错的检查方法。问题似乎是,
UITouch
不是可选的,所以我不能只问它是否nil
。我该怎么办?我试着让它成为一个可选的,但这使得我的其他代码不寻常。当然,必须有一个简单的解决办法。
最佳答案
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
}