我有一個NSMutableDictionary稱爲stuff
,結構是這樣的:如何設置/獲取多級字典中的值?
{
"ThingStats" : { "Thing1" : { "stat1" : 12,
"stat2" : 21 } ,
"Thing2" : { "stat1" : 4,
"stat2" : 15 }
} ,
"OtherStuff" : {...}
}
除了ThingStats
它可以在這一級有其他字典。
使用下標很容易得到Thing1's
stat1
這樣的:
stat1 = stuff[@"ThingStats"][@"Thing1"][@"stat1"];
,並將其設置是這樣的:
stuff[@"ThingStats"][@"Thing1"][@"stat1"] = @13;
這一切的偉大工程在密鑰存在。
第一個問題:如果ThingStats
字典中不存在stuff
但,什麼是讓結構開始的第一項ThingStats
的最佳方式?例如,如果我只有值stat1
和stat2
爲Thing1
什麼是從空stuff
字典如下所示的stuff
字典落得最簡單的方法?假設stuff
不會爲零。
{ "ThingStats" : { "Thing1" : { "stat1" : 12, "stat2" : 21 } } }
第二個問題:後來,當我得到的數值爲stat1
和stat2
爲Thing2
什麼是添加這些值與這個結構最終的最佳方式:
{
"ThingStats" : { "Thing1" : { "stat1" : 12,
"stat2" : 21 } ,
"Thing2" : { "stat1" : 4,
"stat2" : 15 }
}
}
三問題:如果我想使用上述的下標技術爲stat設置一個新值,我必須先做這樣的事情,以確保密鑰一直存在於值中:
if (stuff[@"ThingStats"][@"Thing1"][@"stat1"]) {
stuff[@"ThingStats"][@"Thing1"][@"stat1"] = newValue;
} else {
// add the new stat some other way
}
你是什麼意思的「什麼是最好的方式來添加,最終與這個:」? – kezi 2014-11-25 00:45:51
這只是對象 - 詞典和數組。要記住的是,用字面表達式創建的字典/數組是不可變的,如果你想修改字典/數組,它必須是可變的。 – 2014-11-25 00:47:04
如果我找到你,用'[NSMutableDictionary dictionary]'創建一個新的字典。使用'myDict [@「keyValue」] = elementValue;'向它添加元素。只要繼續這樣做,直到結構完成。 – 2014-11-25 01:38:36