Objective c 在NSDictionary文件中查找具有相应值(或其他内容)的字符串
我已经用必要的字符串和id创建了一个NSMutableDictionaryObjective c 在NSDictionary文件中查找具有相应值(或其他内容)的字符串,objective-c,nsmutabledictionary,Objective C,Nsmutabledictionary,我已经用必要的字符串和id创建了一个NSMutableDictionary 看起来有点像这样 根 || 排 ||- 项1(包括键练习和字符串:测试+键ID和字符串:OIK74) ||- 项2(包括键练习和字符串:testing3+键ID和字符串:424RE) ||-项3(包括键练习和字符串:testing5+键ID和字符串:RET23) 我的问题是如何查找当然与练习字符串对应的键ID 在数组中,我可以使用containsObject进行比较 我希望执行相同的操作并获得相应的字符串。例如,我希望这
看起来有点像这样 根 || 排 ||- 项1(包括键练习和字符串:测试+键ID和字符串:OIK74) ||- 项2(包括键练习和字符串:testing3+键ID和字符串:424RE) ||-项3(包括键练习和字符串:testing5+键ID和字符串:RET23) 我的问题是如何查找当然与练习字符串对应的键ID 在数组中,我可以使用containsObject进行比较 我希望执行相同的操作并获得相应的字符串。例如,我希望这样做 (只是为了让人们了解这个想法)
此词典包含对象查找对象
当我找到keyID=OIK74时,我想用它来测试字符串。
我已经用xmlparsing完成了这个搜索,但是我想知道必须有一种更快的方法来获取ID和相应的字符串 您可以使用
objectForKey:
在字典中查找键的值。例如:
NSString* exercise = [dictionary objectForKey:@"OIK74"];
有关更多信息,请参阅。我认为OP希望通过搜索“OIK74”获得“测试” 我建议的第一件事是将OIK74作为键,然后取出字符串值是很简单的。如果您的每一行都有相同的练习键,那么当ID实际上是一个应该是唯一的ID并且可以很好地用作键时,这似乎是多余的 如果您设置了这种数据安排(我将再次指出,如果可能的话,我认为应该重新访问),那么您将看到与简单的键槽钻孔不同的东西。您正在字典中查找特定行的同级节点的值。我相信NSXMLDocument可以很容易地通过xpath查询做到这一点。这里的概念障碍是NSDictionary反映了plists的结构,但NSDictionary并不是真正的XML。您没有标记和值。您有键和值。在NSDictionary的XML/plist表示中,标记是
和
,您的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值是一个键,所以这种方法在IMHO中更有意义。使用这种新的数据结构,您可以使用
[dictionary valueForKey:@“OIK74]”获得值“testing”
或[字典值forkeypath:@“OIK74.练习”]代码>分别为。希望这有帮助。没错,但我如何获得相应的运动值(“测试”)。因为像这样,您正在用键值填充一个练习字符串。该方法确实检索“testing”值。如果您还需要获取键,也就是说,如果您事先不知道这些键,您只需要获得一些字典,那么NSDictionary类还具有检索所有键和所有值的方法。请参阅Will提供的类参考链接。