我有一个名为Product
和viewModel
的模型,分别称为productViewModel
。Product Model
几乎没有属性,但在本例中,假设它只有name
和price
。
这就是产品:
struct product {
private let name: String
private let price: Float
}
我创建了一个像这样的视图模型:
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
的函数。我想用它填充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
函数,但它似乎真的没有效率,但我想不出其他什么了。
private func populateViewModel() {
for p in popularProducts {
if p.isFavorite{ //it is favorited
let model = ProductViewModel(product: p, isFavorited: favorite)
viewModels.append(model)
}
}
}