0

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

| |

|| - 项目 1(由密钥练习和字符串:测试 + 密钥 ID 和字符串:OIK74 组成

|| - 项目 2(由密钥练习和字符串:testing3 + 密钥 ID 和字符串:424RE 组成)

|| - 项目 3 (由密钥练习和字符串:testing5 + 密钥 ID 和字符串:RET23 组成

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

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

我希望做同样的事情并获得相应的字符串。例如,我希望这样做(这样人们就会明白)

ThisDictionary containsObject LookForObject

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

4

2 回答 2

1

您可以使用 . 在字典中查找键的值objectForKey:。例如:

NSString* exercise = [dictionary objectForKey:@"OIK74"];

有关详细信息,请参阅NSDictionary 类参考

于 2009-07-21T16:13:15.000 回答
0

我认为 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"];。希望有帮助。

于 2010-06-27T16:49:03.147 回答