Objective-CのNull判定
あるサイトのAPIのレスポンスデータ(JSON)にNullが含まれていて、そのデータをCoreDataに挿入する際にNull判定の仕方を間違えていてエラーが発生した。
nilとNullの違いをきちんと分かっていなかったのが原因。
エラーが起きたのはNull判定を下記のようにやっていた。
NSString *str = [responseDic objectForKey:@"title"]; //文字データが入ると想定されていたが<null>データが格納された //strがNullじゃないかつ1文字以上であればOK if (str != nil && [str length] > 0) { //CoreDataに挿入する }
これだとstr != nilの条件はパスされ、lengthメソッドの部分でエラーとなる。
(Nullに対してlengthメソッドを呼ぶ事になるので。)
正しいNull判定は
if (str != [NSNull null] && [str length] > 0) { //CoreDataに挿入する }
としてやらないといけない。
NSNullクラスのクラスメソッドnullを呼び出す事で判定対象のオブジェクトを取得できる。
ちなみに返されるオブジェクトは定数オブジェクトのよう。(シングルトン)