Правильное изображение после сравнения двух json массивов иногда не отображается - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть 2 Json массивов, которые я пытаюсь сравнить в своем коде -> all и allUrl. Когда массив all содержит некоторый идентификатор из массива, строка таблицы изображений allUrl должна быть изменена на красный или наоборот на зеленый. Но иногда работает и красное изображение в строке таблицы отображается правильно, а иногда нет.

Вот мой код для этой части:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell

cell.textLabel?.text = all[indexPath.row].id
cell.detailTextLabel?.text = all[indexPath.row].timestampValue

let listOfStudentsUrl = allUrl.reduce(into: [String:String]()){$0[$1.id] =  $1.timestampValue}
           // Compare data

        listOfStudentsUrl.forEach{ key in print(key)    

        if  cell.textLabel?.text == key.key {
        cell.imageView!.image = UIImage(named:"red_icon")
        }else{
        cell.imageView!.image = UIImage(named:"green_icon")
    }}
        return cell
    }

1 Ответ

0 голосов
/ 01 апреля 2020

То, что вы ищете, это break. Как только вы обнаружите, что key доступно, вам нужно установить изображение и выйти. Здесь, что происходит, вы устанавливаете изображение и затем проверяете снова. По сути, ваше изображение зависит от последнего элемента массива.

if  cell.textLabel?.text == key.key {
    cell.imageView!.image = UIImage(named:"red_icon")
    break
} else {
    cell.imageView!.image = UIImage(named:"green_icon")
}
...