2014年2月11日火曜日

[iOS][Objective-C]NSDictionaryの中身を確認する(description)


どうも。

NSDictionaryに限らずですが、
中身をログ出しして確認したいことは多々ある。

NSDictionary *dic;
というdictionaryがあるとして、
[dic description];
なんて書くと、
文字列で中身が返ってくるので、
NSLog(@"%@", [dic description]);
と書いておけば、
コンソールで確認が可能。
keyとvalueで組み合わせて出してくれる。
わざわざループしなくてもいいから楽。

- (NSString *)descrition;
は、
NSObjectのメソッドなので、
NSArrayなんかでも使える。

arrayがNSString*やNSNumber*なら、
そのまんま格納値が出力されるが、
独自のクラスを使った場合はそうはいかない。

MyClassというクラスがあるとして、
メンバに、
int id;
NSString *name;
とか定義されているとして。

NSArray *array;
というarrayがMyClassのArrayである場合、
[array description];
なんてしても、
idやnameを出してくれるワケではなく、
MyClassクラスのオブジェクトであることと、
恐らくそのアドレスであろうHexの値が確認出来るだけである。
状況によりけりではあるが、
その出力が有用ではない場合の方が多い。

大抵の場合、
独自のクラスもNSObjectを継承しているので、
- (NSString *)description;
もオーバーライドできる。

独自クラスでdescriptionをオーバーライドしておくと、
上記例で、
[array description];
としたときに、
意味ある内容を出力することが出来る。

ただし、
メンバの多いクラスだと、
何でもかんでも出すとごちゃごちゃするので、
descriptionは簡易確認が出来ればいいレベルに抑えておくような精査が必要かもしれない。


それでは。
ちゃお☆


まこぴー。