Swift

【swift3】assertを使う

iOSアプリの開発をしていて、開発環境だけあえてクラッシュさせたい部分が発生しました。
というのも本番環境では通ってほしくない部分に開発してる段階で通ってしまっていたときに気づきやすいようにするためです。
その際に調べて学んだことをまとめていきます。

環境 swift3.2

ビルド

iOSアプリ開発をXcodeでする際に、ある程度コードが書けたらビルドして実行してみると思いますが、開発段階でのビルドと、AppStoreに提出するためのビルドは若干異なってきます。
開発段階ではDebug版、提出するためのものはRelease版と呼びますが、

今回は、Release版では、その部分を通ったとしてもなにも起きないようにして、Debug版の際に、その部分を通ったらクラッシュさせるというようにしていきます。

swiftではそのような関数が用意されています。

assertion

先程のようなときに使うのは、

  • assert
  • assertionFailure

です。
この2つをどのように使い分けるかというと、
assertは条件を与えることができます。

例えばindexの値が0以上でなければならない部分があったとします。その際にassertを用いて、

assert(index >= 0, "error")

というように書きます。
第一引数はBool型で、第二引数はString型でログに出力されるメッセージを渡すことができ、第一引数がFalseになった場合にエラーとなります。
第二引数のメッセージは省略することができます。

一方、assertionFailureは、

assertionFailure("error")

のように書きます。
assertと違い条件式は渡さなくなるので実行された段階でエラーとなります。