2017-07-17 24 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

或者可能是編譯的東西。 :) –

相關問題