【问题标题】:-[__NSCFArray objectForKey:]: unrecognized selector sent to instance 0x11c824e0-[__NSCFArray objectForKey:]:无法识别的选择器发送到实例 0x11c824e0
【发布时间】:2014-03-20 05:53:33
【问题描述】:

我遇到了这个错误,请帮助我,这是我的代码:

if(![[tmparr objectForKey:@"error"] isEqualToString:@"No data found"]){
resultArray = [NSArray arrayWithArray:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]];}

【问题讨论】:

  • 展示你如何声明和设置 tmparr。
  • 你可以在这里发布你的 JSON 响应吗?

标签: ios objective-c json web-services


【解决方案1】:

问题在于tmparrNSArray 类型的变量,但我猜你在这一行中将其视为NSDictionary

[tmparr objectForKey:@"error"];

【讨论】:

  • 不,它是 NSDictionary。 NSDictionary *tmparr = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
  • 不,它是 NSArray。您将其声明为 NSDictionary 的事实不会使 NSJSONSerialization 返回的对象成为字典。它是一个数组。即使您将其声明为字符串,它也将是一个数组。只需向它发送描述消息,您就会看到它的内部表示
  • 我敢打赌,用NSLog(@"%@", NSStringFromClass([tmparr class]));检查一下
【解决方案2】:

感谢大家解决这个问题

if( [tmparr isKindOfClass:[NSDictionary class]] && ![[tmparr objectForKey:@"error"] isEqualToString:@"No data found"]){

                 resultArray = [NSArray arrayWithArray:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]];
         }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多