[__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:]