user icon

NSDictionaryのdictionaryWithObjectsAndKeysが辛い

iOS開発をやっていて、NSDictionaryでよく使うdictionaryWithObjectsAndKeys、NSArrayのarrayWithObjectsですが、下記のように入れ子になってくると何のこっちゃ分からなくなります。

NSDictionary *dictionary1 = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"Taichiro", @"firstname",
                             @"Yoshida", @"lastname",
                             [NSArray arrayWithObjects:
                              [NSDictionary dictionaryWithObjectsAndKeys:
                               @"twitter", @"type",
                               @"dataich", @"id",
                               nil
                               ],
                              [NSDictionary dictionaryWithObjectsAndKeys:
                               @"facebook", @"type",
                               @"dataich", @"id",
                               nil
                               ],
                              nil],
                             @"accounts",
                             nil
                             ];

NSLogで出力した結果を見ると、下記のようなシンプルな内容なのですが。

{
    accounts =     (
                {
            id = dataich;
            type = twitter;
        },
                {
            id = dataich;
            type = facebook;
        }
    );
    firstname = Taichiro;
    lastname = Yoshida;
}

これをもう少し簡単にかける方法があります。
dictionaryWithObjectsAndKeysには @{}
arrayWithObjectsには @[]
というリテラル?が用意されてます。
これを使って書き直すと下記のようになります。

NSDictionary *dictionary2 = @{
                              @"firstname" : @"Taichiro",
                              @"lastname"  : @"Yoshida",
                              @"accounts"  : @[
                                                @{
                                                    @"type" : @"twitter",
                                                    @"id"   : @"dataich"
                                                },
                                                @{
                                                    @"type" : @"facebook",
                                                    @"id"   : @"dataich"
                                                }
                                             ]
                              };

ちょっとは見やすくなりますね!

Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)