Ios -[\uu\nsyi ArrayWorkey:]:发送到实例的选择器无法识别

Ios -[\uu\nsyi ArrayWorkey:]:发送到实例的选择器无法识别,ios,afnetworking,Ios,Afnetworking,我在使用AFNetworking 3.0库时遇到此错误。代码: [manager GET:@"..." parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { NSArray *result = [responseObject arrayForKey:@"items"]; self.obj

我在使用AFNetworking 3.0库时遇到此错误。代码:

[manager GET:@"..."
      parameters:nil
        progress:nil
         success:^(NSURLSessionTask *task, id responseObject) {
             NSArray *result = [responseObject arrayForKey:@"items"];

             self.objects = [NSMutableArray arrayWithArray:responseObject];
             [self.tableView reloadData];
         } failure:^(NSURLSessionTask *operation, NSError *error) { NSLog(@"Error: %@", error); }];
当我使用arrayWithArray时,我得到:

[NSArray initWithArray:range:copyItems:]: array argument is not an NSArray'
您永远不应该信任用户输入、来自网络的数据和其他来源可疑的第三方数据,所以您应该始终检查您是否得到了预期的结果。即使假定responseObject是NSDictionary,也必须检查它以确保正确处理可能的错误

在您的示例中,根据崩溃消息responseObject是NSDictionary类型。此类没有-[ArrayWorkey:]方法。当您试图调用一个方法来发送一条消息时,实际上该消息并没有在层次结构中实现,您会得到这种类型的异常——无法识别的选择器被发送到实例。另外,关于转发扩展信息

固定片段:

[manager GET:@"..."
 parameters:nil
  progress:nil
   success:^(NSURLSessionTask *task, id responseObject) {
    if ([responseObject isKindOfClass:[NSDictionary class]]){
        NSDictionary *dic = (NSDictionary*)responseObject;
        id items = dic[@"items"];
        if ([items isKindOfClass:[NSArray class]]){
            self.objects = [(NSArray*)items mutableCopy];
            [self.tableView reloadData];
        } else {
            NSLog(@"Error: \"items\" is not an array");
        }
    } else {
        NSLog(@"Error: unexpected type of the response object");
    }
} failure:^(NSURLSessionTask *operation, NSError *error) {             
    NSLog(@"Error: %@", error);
}];

你犯了什么错误?我在这里只看到您的代码。错误消息清楚地表明responseObject是一个字典,它不响应ArrayWorkey。快速查看文档可以发现有两个类响应ArrayWorkey:NSUserDefaults和NSUbiquitousKeyValueStore+1@vadian:reponseObject是一个NSDictionary对象。承认它有一个key@items的值,并且该值是一个NSArray对象,您至少应该执行self.objects=[NSMutableArray arrayWithArray:result];而不是self.objects=[NSMutableArray arrayWithArray:responseObject]@Larme我知道我应该这样做,但我已经在ArrayWorkey生产线工作了,所以这不会有多大作用。+1,因为你帮了我。顺便说一句,我的数据总是确定的。。这是我自己的PHP文件,它总是以JSON的形式出现。感谢使用[]提供的解决方案。