ios - 用模型填充viewModel数组

标签 ios swift mvvm

我有一个名为ProductviewModel的模型productViewModelProduct Model具有很少的属性,但对于本示例,我们仅具有nameprice

这是产品:

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的函数。
我想用它填充一个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)
        }
    }
}

关于ios - 用模型填充viewModel数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61611912/

相关文章:

ios - Google Oauth 重定向到 ios 自定义 url

ios - 覆盖只读属性以使其读写

ios - 为什么 UIColor.red 可以工作,但使用 UIColor 的初始值设定项却不行?

ios - SearchController改变tableView的大小

macos - 添加到父 View 时,以编程方式创建的 NSView 不会出现

android - 如何使用 DataBinding Framework MVVM 在 EditText 上设置错误

ios - 快速转换在类签名中具有泛型的具体类型

ios - 在 UIPageViewControllers Swift 中传递数据

wpf - 组合框中的项目分组

windows-phone-8 - MVVM - 与其他 VM 共享封装模型