我想在Parse.com中完成查询时重新加载tableview中的数据但是一旦它开始重新加载,它就永远不会停止。 这是代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
WishlistCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" ];
wishlist *temp=(wishlist*)[_dataSource objectAtIndex:[indexPath indexAtPosition:1]];
PFQuery * retrieveExpos = [PFQuery queryWithClassName:@"_User"];
[retrieveExpos whereKey:@"username" equalTo:temp.exponom];
[retrieveExpos findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
NSLog(@"%@",objects);
if (!error) {
exposArray =[[NSArray alloc] initWithArray:objects];
}
}];
PFQuery * retrieveImage = [PFQuery queryWithClassName:@"CarDescription"];
[retrieveImage whereKey:@"objectId" equalTo:temp.idvoiture];
[retrieveImage findObjectsInBackgroundWithBlock:^(NSArray *objects1, NSError *error) {
NSLog(@"%@",objects1);
if (!error) {
exposArray1 =[[NSArray alloc] initWithArray:objects1];
}
[tableview reloadData];
}];
PFObject * tempObject = [exposArray objectAtIndex:indexPath.row];
cell.EXPONAME.text=[tempObject objectForKey:@"Exponame"];
cell.PHONENUMBER.text=[tempObject objectForKey:@"Number"];
PFObject * tempObject1 = [exposArray1 objectAtIndex:indexPath.row];
PFFile * imageFile= [tempObject1 objectForKey:@"FrontImage"];
cell.loadingSpinner.hidden=NO;
[cell.loadingSpinner startAnimating];
[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
// NSLog(@"%@",data);
cell.CarImage.image=[UIImage imageWithData:data];
[cell.loadingSpinner stopAnimating];
cell.loadingSpinner.hidden=YES;
}
}];
return cell;
}
答案 0 :(得分:1)
我认为你遇到了一个永无止境的递归
reloadData
使tableView重新构建它。最后一步是为所有可见行创建单元格。在tableView: cellForRowAtIndexPath:
中,您再次触发reloadData
(虽然它在一个区块中延迟) - 产生一个圆圈。
另一个问题可能是您在后台线程中调用[tableView reloadData]
。 UI通常必须在主线程上发生。