iOS:寻找 NSDictionary 值时出现错误:[__NSCFNumber isEqualToString:]: unrecognized selector sent to instanc
Posted
技术标签:
【中文标题】iOS:寻找 NSDictionary 值时出现错误:[__NSCFNumber isEqualToString:]: unrecognized selector sent to instanc【英文标题】:iOS: Looking for NSDictionary value I get error: [__NSCFNumber isEqualToString:]: unrecognized selector sent to instanc 【发布时间】:2017-07-17 18:56:12 【问题描述】:我得到了带有字典子数组的 Json 响应,我正在寻找其中一个子数组中的特定值。这是我关心的子数组:
<__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
无论是字符串还是数值,如何检查字典的值而不会出现任何此类错误?
非常感谢您的帮助。
【问题讨论】:
【参考方案1】:您可以创建一个将未知对象转换为字符串的方法:
- (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;
【讨论】:
你可以....但是把所有东西都变成一个字符串可能很慢而且可能不精确。【参考方案2】:在你做isEqualToString之前,你应该先检查你的字典的值类型。
if(dict[@"value"]isKindOfClass==[NSString class]) //value is string
【讨论】:
或者可以编译的东西。 :)以上是关于iOS:寻找 NSDictionary 值时出现错误:[__NSCFNumber isEqualToString:]: unrecognized selector sent to instanc的主要内容,如果未能解决你的问题,请参考以下文章
无法创建 Plist 文件。 iOS+NSDictionary+JSON
iOS NSDictionary 保存到 NSUserDefaults 不保存值