我在另一个字典中的许多JSON字典上调用以下代码(在这种情况下,NSDictionary
对象与另一个NSDictionary
对象。
-(NSString *)getAllDictionaryValues:(NSDictionary *)dict
{
NSString *output=[NSString stringWithFormat:@""];
for(NSString *key in [dict allKeys])
{
output = [NSString stringWithFormat:@"%@\n%@: %@",output, key, [dict objectForKey:key]];
}
return output;
}
然而,当我运行此代码时,我得到了
2014-03-30 01:27:35.565 WebServiceTest[48606:60b] -[__NSCFString allKeys]: unrecognized selector sent to instance 0x9270230
我对allKeys
的电话有什么问题?
答案 0 :(得分:1)
可能是您在调用方法
中输入字符串而不是字典对象答案 1 :(得分:1)
那很明显。如日志所述,您尝试在allKeys
实例上调用__NSCFString
方法。这意味着您已将NSString
而非NSDictionary
发送至getAllDictionaryValues:
方法。
答案 2 :(得分:1)
就像当你向这个函数发送消息时,可能会声明你的代码dict
是NSDicationay
对象(当你调用这个函数时),但它不是字典可能是一个字符串数组或者等等你为什么得到例外。
-(NSString *)getAllDictionaryValues:(NSDictionary *)dict
首先检查您的dict
喜欢
if([dict isKindOfClass:[NSArray class]]){
//is an array
}else if([dict isKindOfClass:[NSDictionary class]]){
//is an dictionary
}else if([dict isKindOfClass:[NSString class]]){
//is an string
}else{
//or its something else
}
答案 3 :(得分:1)
这意味着dict
对象是NSString
类型。您可以像这样检查对象:
if([dict isKindOfClass:[NSDictionary class]]) {
// dict is NSDictionary type of object
} else if([dict isKindOfClass:[NSString class]]) {
// dict is string type of object.
}