У меня есть модели под названием 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
функцию, но она кажется действительно неэффективной, но я не мог придумать ничего другого.