と同じように:
"APP_INFO" : {
"v":"2.0",
"appid":"1",
"lang":"zh-Hans",
}
コンパイル時の定数ではないため、init メソッドを使用できません。
と同じように:
"APP_INFO" : {
"v":"2.0",
"appid":"1",
"lang":"zh-Hans",
}
コンパイル時の定数ではないため、init メソッドを使用できません。
Clang 3.2以降、使用可能な文字通りのコンテナー構文があります。
NSDictionary * d = @{
@"APP_INFO" :
@{
@"v" : @"2.0",
@"appid" : @"1",
@"lang" : @"zh-Hans",
}};
これにより、 /または他のメソッドNSDictionary
を使用した場合と同じように、通常の不変インスタンスが作成されます。それは単に素晴らしい構文糖衣です。alloc
initWithObjects:forKeys:
噂によると、Appleもまもなくこれをコンパイラに追加する予定です。
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"2.0", @"v", @"1", @"appid", @"1", @"zh-Hans", @"lang", nil];
これにより、コンパイル時に内容が固定される不変のディクショナリが作成されます。
同じ init メソッドを使用して、実行時に新しい辞書を作成できます。
id object1 = ...;
...
NSString *key1 = ...;
...
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:object1, key1, object2, key2, object3, key3, nil];