Objc如何将当前值与tableview单元格中的先前double值进行比较

时间:2017-01-21 10:20:38

标签: objective-c uitableview compare double

我有一个使用新的double值每10秒刷新一次的tableview,我需要一种机制来比较当前值与之前的值,但是我没有正确地执行它。

这就是我现在所拥有的。您能否建议如何存储当前/以前的值以在刷新后进行比较。 thx提前

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell;

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierCell forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierCell];
    }

    Value = [[tempDictionary objectForKey:@"value"] doubleValue];
    if (ValueCurrent > ValuePrevious && ValuePrevious !=0.0) {
        Label.backgroundColor = [UIColor greenColor];
    }
    if (ValueCurrent < ValuePrevious) {
        Label.backgroundColor = [UIColor redColor];
    }
    ValuePrevious = Value; 


    return cell;

}

2 个答案:

答案 0 :(得分:1)

在我看来,所有这些检查都应该在模型级别上执行 - 在你的情况下在tempDictionary中。如果在更新字典时新值与前一个不同,则添加另一个键“已更改”并将其设置为@(YES),否则设置为@(否)。

然后你可以在cellForRowAtIndexPath中检查这个值:并设置背景颜色。

答案 1 :(得分:0)

首先,我不确定您是否需要将每个单元格的新值与之前的单元格进行比较。如果您需要将新值与每个单元格的先前值进行比较,则必须分别为先前值和当前值创建NSArray NSDictionary,然后将它们分别与每个单元格进行比较。

如果您想在UITableView重新加载时只比较一个值,那么您不应该在cellForRowAtIndexPath中对其进行比较,而是在调用[tableView reloadData]时进行比较。

希望它有所帮助!