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 件のコメント:
コメントを投稿