しるてく

技術的な話をします

swiftでArrayの範囲外をよんだときにエラーにならずnilを返すextension

swiftのArrayでインデックスの範囲外を指定すると実行時にエラーになってしまう。

    let data = [ 1, 2, 3, 4 ]
    return index < data.count ? data[index] : nil

毎度毎度こんな感じで書くのだるいので、

    let data = [ 1, 2, 3, 4 ]
    return data[safe: index]

でアクセスできるようにする

gist.github.com

Assets.carを展開してpngをゲットしたい

assets catalogにpdf突っ込むとビルド時に@1x, @2x, @3xのpng画像に変換してくれる。 Android用にpng書き出すのが面倒だったので、png取得できないかなーと思ったらAssets.carってやつにまとめられているらしい。

展開するには以下のツールをビルドして ./cartool [展開したいcar] [展開先のdir] ってやるといい。

github.com