毎回忘れるのでブログに書く。配列の要素を取得するとき、
if 0 <= index && index < array.count { let item = array[index] }
のようなコードを書くと思う。ちょっと頭いい感じだと
if array.indices.contains(index) { let item = array[index] }
とも書ける。ただこれはめんどくさいので、こういった拡張を書いておくと良い。
import Foundation extension Collection { subscript (safe index: Index) -> Element? { return indices.contains(index) ? self[index] : nil } }
こうすると
if let item = array[safe: index] { // ここでitemを使う }
という書き方ができる。