Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用模型填充viewModel数组_Ios_Swift_Mvvm - Fatal编程技术网

Ios 使用模型填充viewModel数组

Ios 使用模型填充viewModel数组,ios,swift,mvvm,Ios,Swift,Mvvm,我有一个名为Product的模型和viewModel名为productViewModel。 产品模型几乎没有属性,但在本例中,假设它只有名称和价格 这是产品: struct product { private let name: String private let price: Float } 我创建的viewModel如下所示: struct productViewModel { private let product: Product private let isFavori

我有一个名为
Product
的模型和
viewModel
名为
productViewModel
产品模型
几乎没有属性,但在本例中,假设它只有
名称
价格

这是产品:

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

    }
}
private func populateViewModel() {
    for p in popularProducts {
        let favorite = favoritesTable.contains(p)
        let model = ProductViewModel(product: p, isFavorited: favorite)
        viewModels.append(model)
    }
}
如您所见,
productViewModel
isFavorite
字段,而模型没有该字段。 我有一个从服务器获取
产品的函数。
我想用它填充a
viewModel
数组,并检查每个产品是否在
收藏夹表中(设备本身上的本地表,使用
SQLite

我想到了这样的事情:

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

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

    self.product = product
    self.isFavorite = favorite

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

在我从服务器获得产品列表后,调用这个
populateViewModel
函数,但它似乎真的没有效率,但我想不出其他任何东西。

不太确定你在问什么,但你不能将
isFavorite
添加到你的模型结构中吗?我不这么认为。我的意思是,从技术上讲我可以,但是由于isFavorite可以是真的,也可以是假的,这取决于用户,所以我真的不想将它添加到数据库中。例如,名称和价格是通用的,并且应该在每个设备上显示相同的,而iFavorite不是,所以我真的不想这么做。好的,这很有意义。那么,当你说“它似乎真的没有效率”时,你到底是什么意思?@koen这似乎太难了,每次我获取数据时,都要运行一个循环来填充另一个数组,然后我还要确保数组被填充,并且在我尝试使用它时,数组不是空的,等等。如果您担心不断访问SQLite表,那么
populateViewModel
的所有者可能会保留一个局部变量,或者可能会将其信息存储在
UserDefaults
中。谢谢您,我最终创建了模型数组,并填充了它。我在模型中设置了最喜欢的部分,并在需要时使用它。
private func populateViewModel() {
    for p in popularProducts {
        if p.isFavorite{ //it is favorited
            let model = ProductViewModel(product: p, isFavorited: favorite)
            viewModels.append(model)
        }
    }
}