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
字段,而模型没有该字段。
我有一个从服务器获取产品的函数。
我想用它填充aviewModel
数组,并检查每个产品是否在收藏夹表中(设备本身上的本地表,使用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)
}
}
}