Help us understand the problem. What is going on with this article?

【Swift】Index out of rangeを回避

はじめに

業務でIndex out of rangeにならないように安全に要素を取得してあげたい!と思い、いろいろ調べた結果行きついたものを備忘録として残します。(ファイル名はてきとうです。。。)

Array.swift
var hoge = ["a", "b", "c", "d"]

hoge[3] //結果: d
hoge[4] //結果: Index out of range

これをどうやって防ぐのかというと、Arrayのsubscriptメソッドのsafeって言うのを使います。

ArraySubscriptSafe.swift
var hoge = ["a", "b", "c", "d"]

extension Array {
    subscript (safe index: Index) -> Element? {
        //indexが配列内なら要素を返し、配列外ならnilを返す(三項演算子)
        return indices.contains(index) ? self[index] : nil
    }
}

hoge[safe: 3] //結果: d
hoge[safe: 4] //結果: nil

まとめ

他にもやり方はいろいろとあると思うので、その度に更新していければと思います。
間違いなどがありましたら指摘お願いします。

参照

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away