2017-01-21 12 views
0

У меня есть табличное представление, которое обновляется каждые 10 секунд с новыми двойными значениями, и мне нужен механизм для сравнения текущего с предыдущими значениями, но я не делаю его правильно.Objc как сравнивать текущие с предыдущими двойными значениями в ячейке tableview

Это то, что у меня есть сейчас. Можете ли вы предложить, как сохранить текущие/предыдущие значения, чтобы получить сравнение после обновления. ТНХ заранее

- (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; 

} 
+0

'cellForRowAtIndexPath' - неправильное место для любой логики, непосредственно не связанной с отображением ячеек. В частности, 'ValuePrevious = Value;' абсолютно неверно в этом месте. И, пожалуйста, измените все свои переменные, чтобы начать с строчной буквы. – luk2302

ответ

1

На мой взгляд, все эти проверки должны быть выполнены на уровне модели - в tempDictionary в вашем случае. Добавьте еще один ключ «changed» и установите его на @ (YES), если новое значение отличается от предыдущего при обновлении словаря и в @ (NO) в противном случае.

Затем вы можете проверить это значение в cellForRowAtIndexPath: и настроить цвет фона.

+0

Я согласен, что это лучшее, что нужно сделать. Я постараюсь сделать это и посмотреть, как это происходит. Хотя я предполагаю, что должен существовать более простой способ .... Спасибо, что указали его – ReaLity

0

Прежде всего, я не уверен, что вам нужно сравнить новые значения каждой ячейки с ее предыдущей. Если вам нужно сравнить новое значение с предыдущим значением, соответствующим каждой ячейке, вам нужно создать NSArray из NSDictionary отдельно для предыдущих и текущих значений, а затем сравнить их по каждому из них в зависимости от каждой ячейки.

И если вы хотите сравнить только одно значение при перезагрузке UITableView, то вы не должны сравнивать его в cellForRowAtIndexPath, а не сравнивать его, когда вы звоните [tableView reloadData].

Надеюсь, это поможет!

+0

Спасибо, я знаю, что он должен существовать на более низком уровне проверки, но у меня есть бот, но его полностью выяснить. Спасибо – ReaLity

 Смежные вопросы

  • Нет связанных вопросов^_^