UITableViewCell中的行只显示来自USGS的第一个索引数组

时间:2014-12-15 15:06:03

标签: ios objective-c uitableview

我试图通过带有过滤区域韩国的AFNetworking框架从USGS地震中获取数据。我在方法tableView cellForRowAtIndexPath中显示数据存在问题。 tableview中的行数与数据地震的数量相同,但问题是为什么数据只显示来自韩国的第一次地震。

这是我的方法tableView cellForRowAtIndexPath的代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    EarthquakeViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    NSArray *earthquakeFeaturesData = [self.earthquakeDataService features];

    int indexEarthquake = 0;
    for ( NSDictionary *earthquakeData in earthquakeFeaturesData){
        if ([[earthquakeData title] containsString:@"California"]){
            NSString *stringDate = [Helper convertMilisecondsToReadableStringDate:[earthquakeData updated]];
            cell.placeLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"%@", GLOBAL_FONT_TYPE] size:14];
            cell.placeLabel.text =[earthquakeData place];
            cell.magLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"%@", GLOBAL_FONT_TYPE] size:25];
            cell.magLabel.text = [NSString stringWithFormat:@"%@", earthquakeData.mag];
            cell.mLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"%@", GLOBAL_FONT_TYPE] size:13];
            cell.mLabel.text = [NSString stringWithFormat:@"Magnitude"];
            cell.timeLabel.font = [UIFont fontWithName:[NSString stringWithFormat:@"%@", GLOBAL_FONT_TYPE] size:14];
            cell.timeLabel.text = [NSString stringWithFormat:@"%@ ", stringDate];

            NSLog(@"%@", earthquakeData.mag);
            indexEarthquake++;
            NSLog(@"%i", indexEarthquake)
        }
    }

    return cell;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if(!self.earthquakeDataService)
        return 0;
    else{
        NSArray *earthquakeFeaturesData = [self.earthquakeDataService features];
        int indexEarthquake = 0;
        for ( NSDictionary *earthquakeData in earthquakeFeaturesData){
            if ([[earthquakeData title] containsString:@"California"]){
                indexEarthquake++;
            }
        }
        NSLog(@"%i",indexEarthquake);
        return indexEarthquake;
    }
}

我认为问题是因为我需要数组来保存来自USGS的临时数据并在迭代后呈现它。那么,如何解决这个问题??

1 个答案:

答案 0 :(得分:1)

为表视图中的每个单元格调用一次cellForRowAtIndexPath。每次调用它时都会执行相同的操作,从索引0开始并遍历数据。因为所有单元格都包含相同的数据。您应该使用indexPath选择要使用的数据。如果你在加载到tableview之前开始过滤数据而不是动态地尝试这样做,那可能会更容易。