Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在NSDictionary文件中查找具有相应值(或其他内容)的字符串_Objective C_Nsmutabledictionary - Fatal编程技术网

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

Objective c 在NSDictionary文件中查找具有相应值(或其他内容)的字符串,objective-c,nsmutabledictionary,Objective C,Nsmutabledictionary,我已经用必要的字符串和id创建了一个NSMutableDictionary 看起来有点像这样 根 || 排 ||- 项1(包括键练习和字符串:测试+键ID和字符串:OIK74) ||- 项2(包括键练习和字符串:testing3+键ID和字符串:424RE) ||-项3(包括键练习和字符串:testing5+键ID和字符串:RET23) 我的问题是如何查找当然与练习字符串对应的键ID 在数组中,我可以使用containsObject进行比较 我希望执行相同的操作并获得相应的字符串。例如,我希望这

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

||

||- 项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提供的类参考链接。