iOS:查找NSDictionary值我收到错误:[__ NSCFNumber isEqualToString:]:发送到instanc的无法识别的选择器

时间:2017-07-17 18:56:13

标签: ios objective-c nsarray nsdictionary

我正在使用字典的subArrays获得Json响应,我正在寻找subArrays中的特定值。这是我关心的subArray:

<__NSArrayM 0x600000047680>(
{
    value = "VeryImportanValue";
},
{
    value = "someValue";
},
{
    value = 0912131235235234;
}
)

我正在寻找值为“VeryImportanValue”的字典。但是你可以看到你的值是数字,我检查:

if([[dict objectForKey:@“value”] isEqualToString:@“VeryImportanValue”])

我收到此错误:

 -[__NSCFNumber isEqualToString:]: unrecognized selector sent to instance

但是切换if语句来修复上面的错误:

 if ([[[dict objectForKey:@"value"] stringValue] isEqualToString:@"VeryImportanValue"])

我收到此错误:

-[__NSCFString stringValue]: unrecognized selector sent to instance 

如果是字符串或数值,如何检查字典的值而不会出现任何此类错误?

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您可以创建一个将未知对象转换为字符串的方法:

- (NSString *)stringForStringOrNumber:(id)object
{
    NSString *result = nil;
    if ([object isKindOfClass:[NSString class]]) {
        result = object;
    } else if ([object isKindOfClass:[NSNumber class]]) {
        result = [object stringValue];
    } else {
        result = @"I can't guess";
    }
    return result;
}

答案 1 :(得分:0)

在执行isEqualToString之前,首先应检查字典的值类型。

  if(dict[@"value"]isKindOfClass==[NSString class]) //value is string