2017-07-17 89 views
-3

我得到JSON响应与字典的子字节,我正在寻找一个子数组内的特定值。这是我关心的子阵列:iOS:寻找NSDictionary值我得到的错误:[__NSCFNumber isEqualToString:]:无法识别的选择器发送到instanc

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

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

如果([字典objectForKey:@ “值”] 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

您可以创建一个打开的不明物体为一个字符串的方法:

- (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; 
} 
+0

你可以......但是把所有东西变成一个字符串可能很慢,可能不精确。 – bbum

0

在你做isEqualToString,应先检查你的字典的值类型。

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

或者可能是编译的东西。 :) –

相关问题