NSString のプロパティに NSNull が入っていてハマった

オブジェクトのプロパティの値を UITextField の text に設定しようとしたら

'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x2264678'

っていうエラーが出てアプリが落ちた。

nil が入っているなら例外は出ないはずなのに、って思ったけどよく見たら nil じゃなくて NSNull だった。NSNull は nil とは別物で、NSNull は nil と同じようには振る舞ってくれない。

if (![comment.content isEqual:[NSNull null]])
{
    commentCell.contentTextView.text = comment.content;
}

っていう感じで NSNull かどうかチェックして回避してやる必要がある。

WebAPI を叩いて返ってきた JSON をパースして得たオブジェクトに NSNull が入っていることがあるので、今後同じことでハマらないようにメモしておく。