如何在不重复的情况下创建子数组 Swift
How to create subarrays without duplication Swift
我的 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
class ContentViewModel: ObservableObject {
init() {
let allItemsInit = Bundle.main.decode([Meal].self, from: "menu.json")
self.allItems = allItemsInit
self.recomendationItems = allItemsInit.filter {[=12=].recommendation == true}
}
@Published var allItems: [Meal] = []
@Published var recomendationItems: [Meal] = []
}
我只是将某些元素分配给新的 recomendationItems 数组,从而复制它们,这是正确的做法吗?
recomendationItems - 举个例子,会有大量这样的子数组。
您不需要“子数组”——只要 allItems
发生变化,您的 View
就会更新,因此您可以使用其他计算属性来提供子数组,而不是使它们成为实际的独立容器.
例如:
class ContentViewModel: ObservableObject {
init() {
self.allItems = Bundle.main.decode([Meal].self, from: "menu.json")
}
@Published var allItems: [Meal] = []
var recommendedItems: [Meal] {
return allItems.filter {[=10=].recommendation == true}
}
}
我的 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
class ContentViewModel: ObservableObject {
init() {
let allItemsInit = Bundle.main.decode([Meal].self, from: "menu.json")
self.allItems = allItemsInit
self.recomendationItems = allItemsInit.filter {[=12=].recommendation == true}
}
@Published var allItems: [Meal] = []
@Published var recomendationItems: [Meal] = []
}
我只是将某些元素分配给新的 recomendationItems 数组,从而复制它们,这是正确的做法吗?
recomendationItems - 举个例子,会有大量这样的子数组。
您不需要“子数组”——只要 allItems
发生变化,您的 View
就会更新,因此您可以使用其他计算属性来提供子数组,而不是使它们成为实际的独立容器.
例如:
class ContentViewModel: ObservableObject {
init() {
self.allItems = Bundle.main.decode([Meal].self, from: "menu.json")
}
@Published var allItems: [Meal] = []
var recommendedItems: [Meal] {
return allItems.filter {[=10=].recommendation == true}
}
}