我创建了一个带有必要字符串和id的WB的NSMutableDictionary 看起来有点像这样
根
| |
行
|| - Item1(由关键练习和字符串组成:测试+键ID和字符串:OIK74 )
|| - Item2(由关键练习和字符串组成:testing3 +一个关键ID和一个字符串:424RE)
|| - Item3 (由键练习和字符串组成:testing5 +一个键ID和一个字符串:RET23 )
我的问题如何查找与练习字符串相对应的密钥ID。
在数组中,我可以使用containsObject进行比较。
我希望这样做并获得相应的字符串。我希望这样做
(这样人们就会明白这个想法)
ThisDictionary containsObject LookForObject
当我找到关键 ID = OIK74时,我想用它进行字符串测试。 我用xmlparsing完成了这个搜索,但我想知道必须有一个更快的方法来获取ID和相应的字符串。
答案 0 :(得分:1)
您可以使用objectForKey:
在字典中查找键的值。例如:
NSString* exercise = [dictionary objectForKey:@"OIK74"];
有关详细信息,请参阅NSDictionary Class Reference。
答案 1 :(得分:0)
我认为OP希望通过搜索“OIK74”进行“测试”。
我建议的第一件事是你把OIK74作为密钥,然后取出字符串值是微不足道的。如果你的每一行都有相同的练习键,那么当看起来ID实际上是一个唯一且非常适合作为密钥的ID时,这似乎是多余的。
如果您已经设置了这种数据安排(我会再次说,我认为应该重新考虑,如果可能的话),那么您正在寻找与简单的密钥路径钻孔不同的东西。您正在为特定行查找字典中的兄弟节点的值。我相信NSXMLDocument可以很容易地使用xpath查询。这里的概念障碍是NSDictionary反映了plists的结构,但NSDictionary并不是真正的XML。您没有标签和值。你有钥匙和价值观。在NSDictionary的XML / plist表示中,标记为<key>
和<value>
,您的NSDictionary键和值是这些标记中的值。
我不是100%确定你所概述的数据的内部结构是什么,但看起来你有类似的东西
root = (
item1 = {
Exercise = "testing",
ID = "OIK74"
}
item2 = {
Exercise = "testing3",
ID = "424RE"
}
item3 = {
Exercise = "testing5",
ID = "RET23"
}
)
采用文本plist格式。是对的吗?如果是这样,我建议将其完全重新整理成一个更简单的结构:
{
"OIK74" = "testing",
"424RE" = "testing3",
"RET23" = "testing5"
}
如果您有更多这些ID的数据,那么您可以将字典设置为键的值,如下所示:
{
"OIK74" = {
"Exercise" = "testing",
"OtherDataPoint" = "othervalue"
},
"424RE" = {
"Exercise" = "testing3",
"OtherDataPoint" = "othervalue3"
},
"RET23" = {
"Exercise" = "testing5",
"OtherDataPoint" = "othervalue5"
}
}
由于您提到您正在寻找的OIK74值是关键,因此这种方法更有意义恕我直言。使用这种新的数据结构,您将分别使用[dictionary valueForKey:@"OIK74"];
或[dictionary valueForKeyPath:@"OIK74.Exercise"];
获得“测试”值。希望有所帮助。