2012年7月14日土曜日

NSNull って使えないかも

NSNull objecrtive-cのコレクションにはnilを突っ込めないので(番兵につかわれてる?)のでディクショナリーなんかで値がないことを表現したい場合はNSNullクラスのインスタンスを使うみたい。
ドキュメントにもそう書いてある。ちなみにシングルトンインスタンスのようだ。
こいつをif文で比較すると真になってしまう。ただのオブジェクトなので当然かも知れないが、期待としてはそうじゃないだろと・・・
 NSNull *nullObj = [NSNull null] //シングルトンインスタンスを取得する
if(nullObj){
     NSLog(@"残念...");
}else{
    NSLog(@"こっちでしょ");
}

>残念...

まあただのオブジェクトなんだからむしろこれが正しいのか。
適当にメソッド作って対応するしかないのかな。

- (BOOL)isNSNull:(id)obj{
    if([obj isEqual:[NSNull null]] || obj == nil){
        return YES;
    }else{
        return NO;
    }
}
そういえばDBNullってあったなあ。あれも比較が冗長だったけど似たようなもんか。

0 件のコメント:

コメントを投稿