我有一个名为stuff
的NSMutableDictionary,结构如下:
{
"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
的{{1}}值,那么从空{{1}结束下面显示的Thing1
字典的最简单方法是什么?字典?假设stuff
不会为零。
stuff
第二个问题:稍后,当我获得stuff
和 { "ThingStats" : { "Thing1" : { "stat1" : 12, "stat2" : 21 } } }
的{{1}}值时,将这些值添加到最终的最佳方式是什么?这种结构:
stat1
第三个问题:如果我想使用上面的下标技术为stat设置一个新值,我必须先做这样的事情,以确保密钥一直存在于价值:
stat2
答案 0 :(得分:0)
我认为你走在正确的轨道上。你的问题3回答你的第一个问题。对于您的第一个问题,您可以使用:
//Setup
NSMutableDictionary *stuff = [NSMutableDictionary dictionary];
if (!stuff[@"ThingStats"]) {
stuff[@"ThingStats"] = [NSMutableDictionary dictionary];
stuff[@"ThingStats"][@"Thing1"] = [NSMutableDictionary dictionary];
stuff[@"ThingStats"][@"Thing2"] = [NSMutableDictionary dictionary];
}
//Use
stuff[@"ThingStats"][@"Thing1"][@"stat1"] = @12;
stuff[@"ThingStats"][@"Thing1"][@"stat2"] = @21;
stuff[@"ThingStats"][@"Thing2"][@"stat1"] = @4;
stuff[@"ThingStats"][@"Thing2"][@"stat2"] = @15;