如何在不重复的情况下创建子数组 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}
    }
}