Сравните данные между двумя массивами, содержащими пользовательские объекты Swift. - PullRequest
0 голосов
/ 31 мая 2018

У меня есть некоторые данные, полученные через API, которые возвращают мне JSON.Я знаю, что могу получить его и сохранить соответствующую информацию из API в моем приложении для iOS.Но только во время работы приложения.IE Я не реализовал, как сохранить информацию, полученную из API, в UserDefalults.Работая над этой функцией, я столкнулся с проблемой.

У меня есть два массива, которые отслеживают мои данные.Первый массив - это массив, который я хочу сохранить в UserDefaults, когда я получаю свои данные.Этот называется «кредиторами» и хранит LenderData. Второй массив - это мой временный массив.Он содержит объекты того же типа, и это тот, который я хочу заполнить данными из API, а затем сравнить с моими существующими «кредиторами» массива.

Я хочу проверить, содержит ли массив «кредиторов»любой объект, который имеет тот же идентификатор, что и объект, на который я смотрю в массиве lendersTemp.Если массив lenders не содержит какого-либо объекта LederData с идентификатором tempLender, который мы в данный момент просматриваем, мы добавляем tempLender в массив lenders.Как мне поступить так?

Мое текущее (нерабочее) решение выглядит следующим образом:

var lenders = [LenderData]()
var lendersTemp = [LenderData]()

...
// Get JSON DATA
...

for tempLender in self.lendersTemp {
    if !self.lenders.contains(where: {$0.id == tempLender.id}) {
        self.lenders.append(tempLender)
     }
}

РЕДАКТИРОВАТЬ: На мой взгляд загрузил метод:

var lenders = [LenderData]()
var lendersTemp = [LenderData]()

override func viewDidLoad() {
    super.viewDidLoad()

    downloadJSON {
        self.myTableView.reloadData()
    }

    self.myTableView.rowHeight = 90
    myTableView.delegate = self
    myTableView.dataSource = self
}

1 Ответ

0 голосов
/ 01 июня 2018

Я понял это с некоторой помощью!Так что это мой ответ на мой собственный вопрос!

Моя проблема заключалась в том, что получение данных из моего API выполняется с помощью асинхронного метода.И я попытался сделать сравнение после вызова метода перезагрузки в моем TableView.Таким образом, я не заполнял массив, из которого табличные данные получают данные, до того, как был вызван reloadData(), и поэтому казалось, что мой алгоритм просмотра и сравнения таблиц не работает, хотя на самом деле это работает!

...