Iphone 使用switch语句读取NSDictionary

Iphone 使用switch语句读取NSDictionary,iphone,ios,nsdictionary,Iphone,Ios,Nsdictionary,我试图弄明白(如果可能的话)如何用switch语句而不是for循环来读取nsdictionary键/值 目前我正在这样做 for (id key in seriesData) { NSLog(@"key: %@, value: %@", key, [seriesData objectForKey:key]); } 然而,我希望它是一个switch语句,我在其中查找键,如果找到了键,那么我将该值放入一个变量中,稍后我将使用该变量 希望这是有意义的,任何帮助都将不胜感激。C开关语句仅适

我试图弄明白(如果可能的话)如何用switch语句而不是for循环来读取nsdictionary键/值

目前我正在这样做

for (id key in seriesData) {

    NSLog(@"key: %@, value: %@", key, [seriesData objectForKey:key]);

}
然而,我希望它是一个switch语句,我在其中查找键,如果找到了键,那么我将该值放入一个变量中,稍后我将使用该变量


希望这是有意义的,任何帮助都将不胜感激。

C
开关
语句仅适用于类整数键(包括
枚举
)。不能对Objective-C对象使用
switch
,例如在
NSDictionary
中找到的对象,C
switch
语句仅适用于类整数键(包括
enum
)。无法对Objective-C对象(如
NSDictionary

中的对象)使用
switch
,如果您熟悉使用块,可以使用基于块的枚举方法enumerateKeysAndObjectsUsingBlock

此外,如果您正在寻找“过滤”键;如中所示,存在特定的键子集(例如以“A”开头的键),您可以使用诸如keysOfEntriesPassingTest之类的谓词方法之一


所有这些都记录在类引用中。

如果您熟悉使用块,可以使用基于块的枚举方法enumerateKeysAndObjectsUsingBlock

此外,如果您正在寻找“过滤”键;如中所示,存在特定的键子集(例如以“A”开头的键),您可以使用诸如keysOfEntriesPassingTest之类的谓词方法之一


所有这些都记录在课程参考中。

哦,对了。。。那么你认为最好的解决办法是什么呢?for循环中的if语句?对于大多数问题,您将使用
if
。很难说你的具体问题。ObjC提供了许多动态特性,可以减少对这些特性的需求。但是对于大多数简单的问题,
if
/
else if
是正确的工具。你可以使用一个带有
hash
方法的开关,顺便说一句,这就是它的用途。注意这一点。这不是
hash
的用途。对于短字符串,是的,它通常会工作。但是对于在中间只有不同的长字符串,它可能会有很多冲突。当我试图使用
hash
作为使URL简短和唯一的简单方法时,我个人就遇到了这个问题。这是一个错误的工具<代码>散列旨在加快相等性检查。没有保证它是抗碰撞的。对于非字符串键,它可能是任意不好的(一直以来都让所有对象返回相同的
哈希值
;我在真实代码中看到过这一点,这是完全合法的)。好的,谢谢大家。。我已经使用for循环,如果语句现在尝试它,希望它能正常工作。哦,对了。。。那么你认为最好的解决办法是什么呢?for循环中的if语句?对于大多数问题,您将使用
if
。很难说你的具体问题。ObjC提供了许多动态特性,可以减少对这些特性的需求。但是对于大多数简单的问题,
if
/
else if
是正确的工具。你可以使用一个带有
hash
方法的开关,顺便说一句,这就是它的用途。注意这一点。这不是
hash
的用途。对于短字符串,是的,它通常会工作。但是对于在中间只有不同的长字符串,它可能会有很多冲突。当我试图使用
hash
作为使URL简短和唯一的简单方法时,我个人就遇到了这个问题。这是一个错误的工具<代码>散列
旨在加快相等性检查。没有保证它是抗碰撞的。对于非字符串键,它可能是任意不好的(一直以来都让所有对象返回相同的
哈希值
;我在真实代码中看到过这一点,这是完全合法的)。好的,谢谢大家。。我已经使用for循环,如果语句现在尝试它,希望它能正常工作。