gpt4 book ai didi

ios - TableView 数组返回 null

转载 作者:行者123 更新时间:2023-11-29 00:50:16 25 4
gpt4 key购买 nike

我在 ViewController 中实现了一个 UITableview。我想在通过 JSON 获取的 TableView 中显示一些数据。

- (void)getData
{

NSURLSession*session=[NSURLSession sharedSession];

NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://itunes.apple.com/us/rss/topaudiobooks/limit=10/json"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"%@", json);

NSArray*entryarr=[[json objectForKey:@"feed"]objectForKey:@"entry"];


for (NSDictionary*appDict in entryarr) {
NSString*title=[[appDict objectForKey:@"im:name"]objectForKey:@"label"];


NSString*imageStr=[[[appDict objectForKey:@"im:image"]objectAtIndex:2]objectForKey:@"label"];
NSURL*imageURL=[NSURL URLWithString:imageStr];

NSData*imageData=[[NSData alloc]initWithContentsOfURL:imageURL];
[self.imageArray addObject:imageData];
[self.tittleArray addObject:title];
[self.termArray addObject:title];

}

NSLog(@"%lu %lu %lu",(unsigned long)self.imageArray.count,(unsigned long)self.tittleArray.count,(unsigned long)self.termArray.count);

}];
[dataTask resume];

}

现在,当我将数组分配给 TableView 单元格时,它显示数组为空。但在 getData 方法中,数组由 10 个元素组成。

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _tittleArray.count;


}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString*reUse=@"use";
UITableViewCell*cell=[tableView dequeueReusableCellWithIdentifier:reUse];

if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reUse];
cell.textLabel.textColor = [UIColor orangeColor];


}
cell.textLabel.text=[self.tittleArray objectAtIndex:indexPath.row];

cell.imageView.image=[self.imageArray objectAtIndex:indexPath.row];

return cell;

}

为什么会这样?我该怎么做。?谁能给我提供有效的解决方案?

最佳答案

好吧,虽然所有其他答案都建议添加

[self.tableView reloadData];

如果您的 block 在主线程中运行,则可能已经解决了问题,但由于您正在执行转到另一个线程的网络操作,因此您将无法从该线程修改 UI。您可能想这样做:

dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});

首先,这是一个根本问题,您甚至没有调用重新加载函数。另一个问题是对事物如何运作的基本理解。因此,每当您的模型准备好并填充但您的 UI 没有更改(假设您调用函数来更改 UI)时,请尝试查看日志输出,有时它会说您无法在另一个线程中更改 UI,并检查哪个线程您的代码正在运行的线程。

关于ios - TableView 数组返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com