我的 SwiftUI 项目中有一个 Meal 结构
struct Meal: Identifiable, Codable, Equatable {
var id = UUID().uuidString
var name: String
var time: String
var type: String
var recommendation: Bool
}
我也有 ContentViewModel 类
class ContentViewModel: ObservableObject {
init() {
let allItemsInit = Bundle.main.decode([Meal].self, from: "menu.json")
self.allItems = allItemsInit
self.recomendationItems = allItemsInit.filter {$0.recommendation == true}
}
@Published var allItems: [Meal] = []
@Published var recomendationItems: [Meal] = []
}
我只是将某些元素分配给新的 recomendationItems 数组,从而复制它们,这是否是正确的方法。
recomendationItems - 只是举例,会有大量这样的子数组。
答案 0 :(得分:2)
您不需要“子数组”——您的 View
将在 allItems
更改时更新,因此您可以使用其他计算属性来提供子数组,而不是使它们成为实际的独立容器。< /p>
例如:
class ContentViewModel: ObservableObject {
init() {
self.allItems = Bundle.main.decode([Meal].self, from: "menu.json")
}
@Published var allItems: [Meal] = []
var recommendedItems: [Meal] {
return allItems.filter {$0.recommendation == true}
}
}