Заполнение массива viewModel моделью - PullRequest
1 голос
/ 05 мая 2020

У меня есть модели под названием Product и viewModel под названием productViewModel. Product Model имеет несколько свойств, но для примера допустим, что он имеет только name и price.

Это продукт:

struct product {

  private let name: String
  private let price: Float

}

Я создаю viewModel как это:

struct productViewModel {
private let product: Product
private let isFavorite: Bool

init(product: Product, favorite: Bool = false) {

    self.product = product
    self.isFavorite = favorite

    }
}

Как видите, productViewModel имеет поле isFavorite, которого нет в модели. У меня есть функция, которая получает Product с сервера. Я хочу заполнить им массив a viewModel и проверить для каждого продукта, есть ли он в favorites table (локальная таблица на самом устройстве, используя SQLite)

Я о чем-то подумал вот так:

private func populateViewModel() {
    for p in popularProducts {
        let favorite = favoritesTable.contains(p)
        let model = ProductViewModel(product: p, isFavorited: favorite)
        viewModels.append(model)
    }
}

и после того, как я получу список продуктов с сервера, вызвать эту populateViewModel функцию, но она кажется действительно неэффективной, но я не мог придумать ничего другого.

1 Ответ

2 голосов
/ 05 мая 2020
private func populateViewModel() {
    for p in popularProducts {
        if p.isFavorite{ //it is favorited
            let model = ProductViewModel(product: p, isFavorited: favorite)
            viewModels.append(model)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...