我有NSDictionary
*输入,有2个键/值对
[0]="@id":@"random"
[1]="@val":@"100"
当我编写以下代码时,这些是我NSDictionary
的内容
for(NSDictionary *inputVal in input)
if(inputVal[@"id"] == field)
我的变量字段是NSString
并且包含随机数,我收到错误
[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance
我知道这个错误意味着我正在对字符串对象进行字典操作,即我期待一个字典对象但是有一个字符串
但我的问题是我确实只有NSDictionary
个对象
答案 0 :(得分:1)
for(NSDictionary *inputVal in input)
迭代所有键。
所以你应该使用:
for(NSDictionary *key in input){
if(input[key] == field){ // notice: used input dictionary here.
....
}
}
此外,您无需迭代从键中查找值,如果使用键,则可以直接获取:
if (input[@"id"] == field) {
...
}
执行上述操作后,您将该值与带有==
的字符串进行比较,如果您确定需要比较两者的地址,那么就可以了。否则,您需要使用isEqualToString:
。
答案 1 :(得分:1)
对NSDictionary
进行迭代不会为您提供词典,它会迭代NSString
个键:
for (NSString *inputKey in input) { //first value will be "id", second will be "val"
if ([inputKey isEqual:@"id"] && [input[inputKey] isEqual:field]) {
}
}
您可能甚至不需要迭代:
if ([input[@"id"] isEqual:field]) {
//do something
}
另请注意Anoop Vaidya's answer及其对==
和isEquals:
的评论。