我认为 OP 希望通过搜索“OIK74”来获得“测试”。
我建议的第一件事是您将 OIK74 设为键,然后取出字符串值是微不足道的。如果您的每一行都有相同的练习键,那么当 ID 实际上是一个应该是唯一的并且可以很好地用作键的 ID 时,这似乎是多余的。
如果您设置了这种数据排列(我会再说一遍,我认为如果可能的话应该重新审视),那么您正在寻找与简单的 keypath 钻孔不同的东西。您正在为您的特定行在字典中寻找兄弟节点的值。我相信 NSXMLDocument 可以通过 xpath 查询很容易地做到这一点。这里的概念障碍是 NSDictionary 反映了 plist 的结构,但 NSDictionary 并不是真正的 XML。您没有标签和值。你有键和值。在 NSDictionary 的 XML/plist 表示中,标签是<key>
and<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"];
。希望有帮助。