[__NSArray0 objectForKey:]: unrecognized selector sent to instance 0x7feb72d046b0' [closed]

Posted

技术标签:

【中文标题】[__NSArray0 objectForKey:]: unrecognized selector sent to instance 0x7feb72d046b0\' [closed]【英文标题】:[__NSArray0 objectForKey:]: unrecognized selector sent to instance 0x7feb72d046b0' [closed][__NSArray0 objectForKey:]: unrecognized selector sent to instance 0x7feb72d046b0' [closed] 【发布时间】:2016-05-11 00:39:44 【问题描述】:

我不想从此 Json 中检索图像“url”: http://api-public.guidebox.com/v1.43/Tunisia/rKgEWJbFg0kgEHrcGXPKhPDo0XtTafyC/search/person/name/kelly/fuzzy 我的 Json 有这种格式: 结果 […图像 small url ] 任何人都可以和我核对一下这段代码吗 有谁可以帮帮我

- (void)viewDidLoad 
[super viewDidLoad];


_tableData=[[NSMutableArray alloc]initWithCapacity:50] ;
_tab.delegate=self;
_tab.dataSource=self;
_tab.backgroundColor = [UIColor clearColor];


NSURL *url = [NSURL URLWithString:BaseURLStringg];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

[manager GET:url.absoluteString parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) 

  //  NSLog(@"JSON: %@", responseObject);
    NSDictionary *jsonDict = (NSDictionary *) responseObject;
    NSArray *products = [jsonDict objectForKey:@"results"];
    [products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop)

        NSString *name= [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"name"] ];

         //   poster= [NSString stringWithFormat:@"%@ ", [obj objectForKey:@"url"] ];


        poster=[NSString stringWithFormat:@"%@ ", [[[obj objectForKey:@"images"]objectForKey:@"small"]objectForKey:@"url"]];

        NSLog(poster);

        NSDictionary *movieDictionary = @@"name":name,
        @"url":poster;
        [self.tableData addObject:movieDictionary];
        [self.tab reloadData];



      ];        






    /*dispatch_sync(dispatch_get_main_queue(), ^
     self.tableData=[[NSMutableArray alloc]initWithArray:responseObject];
     [self.tab reloadData]; );
     */



 failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) 

    NSLog(@"Error: %@", error);

   ];


   





  -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
   return 1;
  

  -(NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:(NSInteger)section
  return [self.tableData count];
  

  -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath

  UITableViewCell* mycell=[tableView dequeueReusableCellWithIdentifier:@"myCell" forIndexPath:indexPath];

  // NSInteger nameindex=[_DB.arrColumnNames indexOfObject:@"name"];

//NSString* name=[[_myarray objectAtIndex:indexPath.row] objectAtIndex:nameindex];



 UILabel *name = [mycell.contentView viewWithTag:101];
 UIImageView *posterImage=[mycell.contentView viewWithTag:102];

/*    title.text= [_tableData objectAtIndex:indexPath.row];
 release_year.text= [_tableData objectAtIndex:indexPath.row];
 themoviedb.text= [_tableData objectAtIndex:indexPath.row];
 original_title.text= [_tableData objectAtIndex:indexPath.row];*/

NSDictionary *movieDictionary = self.tableData[indexPath.row];
name.text= movieDictionary[@"name"];




//mycell.textLabel.text=@"eererr";

NSString *finalURL = movieDictionary[@"url"];
finalURL = [finalURL stringByReplacingOccurrencesOfString:@"\\" withString:@""];
finalURL = [finalURL stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *cleanedUrl  = [finalURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];





NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:cleanedUrl]];


[posterImage setImage: [UIImage imageWithData:imageData]];





mycell.textLabel.textColor = [UIColor blackColor];



mycell.contentView.backgroundColor = [UIColor clearColor];
mycell.backgroundColor = [UIColor clearColor];
return mycell;
  

  -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath


  
  - (void)didReceiveMemoryWarning 
  [super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
  

  @end

这是我的 Json 文件 “结果”:[ “身份证”:197753, "name":"Kelly Hu", “wikipedia_id”:20646206, "freebase":"/m/03l7xc", “imdb”:“nm0005026”, "themoviedb":11024, “电视”:497, “社交”: “推特”: “twitter_id”:51649635, “链接”:“https://twitter.com/KellyHu” , “图片”: “小”: "url":"http://static-api.guidebox.com/091414/thumbnails_people/29984-7234075409-1208944377-2556317393-small-135x200.jpg", “宽度”:135, “身高”:200 ,

【问题讨论】:

你需要清理你的问题。删除与您所要求的内容无关的所有代码。格式化代码,使其更具可读性。格式化 JSON。最后确保您的问题清晰易懂。 @drekka 我的问题很清楚,将我的代码或我的 json url 拖放到你的导航器中你就会明白我的意思 正如错误消息所说 - 您在 NSArray 上调用 objectForKey 并且 NSArray 没有调用该方法的方法。因此,您正在从 json 中提取数组数组,但将其视为字典数组。 @SausageMachine 你能帮我纠正一下代码吗,因为我是 ios 的初学者,我真的需要它 @wassimwess 请参阅***.com/help/mcve 您当前的问题需要大量工作。这就是为什么你最后几个问题做得不好的原因。您在此问题中发布的大多数代码与您的问题无关,而且格式不正确。您尚未发布有关收到的 JSON 的任何详细信息。您还没有指出哪一行代码导致了错误。您没有显示任何 NSLog 语句的相关输出。目标是让人们可以轻松地帮助您。 【参考方案1】:

"id":753924,
"name":"Kelly Byrns",
"images":[]

响应 json 不正确。当没有图像时,它返回一个空数组,不是字典

因此您可以检查obj[@"images"] 类型,或要求服务器始终返回字典。

【讨论】:

请和我一起检查代码 @wassimwess 已更新。如果打印obj,就可以看出问题了。

以上是关于[__NSArray0 objectForKey:]: unrecognized selector sent to instance 0x7feb72d046b0' [closed]的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:UITabBarController 错误:'*** -[__NSArray0 objectAtIndex:]:索引 1 超出了空 NSArray 的范围'

IOS 中runtime 不可变数组__NSArray0 和__NSArrayI

异常“NSRangeException”,原因:“*** -[__NSArray0 objectAtIndex:]:索引 0 超出了空 NSArray 的范围”

*** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds fo

SBJson 解析后的执行 (__NSArrayM objectForKey:)

UITableView reloadData 崩溃并出现错误 [__NSCFConstantString objectForKey:]