就像:如何在objective-c中將NSdictionary表示爲字面值?
"APP_INFO" : {
"v":"2.0",
"appid":"1",
"lang":"zh-Hans",
}
我不能使用的init方法,因爲它不是一個編譯時間常數。
就像:如何在objective-c中將NSdictionary表示爲字面值?
"APP_INFO" : {
"v":"2.0",
"appid":"1",
"lang":"zh-Hans",
}
我不能使用的init方法,因爲它不是一個編譯時間常數。
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];
開始在鐺3.2,有literal container syntax可供選擇:
NSDictionary * d = @{
@"APP_INFO" :
@{
@"v" : @"2.0",
@"appid" : @"1",
@"lang" : @"zh-Hans",
}};
這將創建一個普通的不可變NSDictionary
例如,就好像您使用了alloc
/initWithObjects:forKeys:
或其他任何方法;它只是很好的語法糖。有傳言說,蘋果也會很快將它加入到他們的編譯器中。
不是一個傳言,它清楚地表明在你鏈接到的頁面上:「蘋果編譯器發行版的用戶可以使用這些功能從Apple LLVM Compiler 4.0開始」^^ – borrrden 2012-07-23 03:49:16
* Whoooosh *在我頭上,對不起, ^; – borrrden 2012-07-23 03:54:43
雖然是運行時初始化的語法糖,但您仍然無法將其設置爲const或放在頭文件中。只有NSString文字可以做到這一點。 – rickster 2012-07-23 03:58:41