第二回 NSNullと比較(Obj-C)

皆さん、はじめまして、こんにちは

WonderfullアプリのiOS開発担当のティーラットと申します。
変な名前ですが、日本人ではなくタイ人です。
おかしい日本語で書くかもしれないので、申し訳ございません
よろしくお願いいたします。

 

Obj-Cでめんどくさいことはいっぱいあると思いますが、その中で例えば、
JSONデータをNSJSONSerializationでパースして、NSDictionaryの値にNSNullに会った人がいると思います。

ちょっと調べてみましたが、
今日はNSNullとNSStringとの比較を紹介したいと思います。


if (![myString isEqual:[NSNull null]])
{
// isEqualはもちろん使えますけど、このケースは==の方が適合だと思います
}

if (myString != [NSNull null])
{
//問題なく使えそうですけど、以下のようなwarningが出てきます。
//"Comparison of distinct pointer types ('NSString *' and 'NSNull *')"
}


if (myString != (NSString *)[NSNull null])
{
//NSStringにcastingするのは良いアイデアですね。warningがでてなく、GOOD JOB!
}

if (myString != (id)[NSNull null])
{
//idにcastingしても行けそうですね。PERFECT!!
}

//もし、NSNullのextensionを書けば、もっとカッコいいと思いますが、以下のような感じですね。

if (myString != [NSNull idNull])
{

}

@interface NSNull (idNull)
+ (id)idNull;
@end
@implementation NSNull (idNull)
+ (id)idNull { return [NSNull null]; }
@end

今日はこんな感じですかな。。。ここまで読んでくれてありがとうございます。


参考
http://qiita.com/yimajo/items/c9338a715016e7a812b1
http://www.takingnotes.co/blog/2012/01/06/comparing-to-nsnull/
http://threetreeslight.com/post/72836538309/objective-c%E3%81%AB%E3%81%AFnull-nil-nsnull%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%AD


PS, Wonderfullサービスの詳しい内容は http://www.wonderfull.jp