在NSDictionary文件中查找具有相应值(或其他内容)的字符串

时间:2009-07-21 15:53:19

标签: objective-c nsmutabledictionary

我创建了一个带有必要字符串和id的WB的NSMutableDictionary 看起来有点像这样

| |

|| - Item1(由关键练习和字符串组成:测试+键ID和字符串:OIK74

|| - Item2(由关键练习和字符串组成:testing3 +一个关键ID和一个字符串:424RE)

|| - Item3 (由键练习和字符串组成:testing5 +一个键ID和一个字符串:RET23

我的问题如何查找与练习字符串相对应的密钥ID。

在数组中,我可以使用containsObject进行比较。

我希望这样做并获得相应的字符串。我希望这样做 (这样人们就会明白这个想法)  

ThisDictionary containsObject LookForObject

当我找到关键 ID = OIK74时,我想用它进行字符串测试。 我用xmlparsing完成了这个搜索,但我想知道必须有一个更快的方法来获取ID和相应的字符串。

2 个答案:

答案 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"];获得“测试”值。希望有所帮助。