如何在不重复的情况下创建子数组 Swift

时间:2021-05-04 18:36:21

标签: arrays swift swiftui duplicates sub-array

我的 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 - 只是举例,会有大量这样的子数组。

1 个答案:

答案 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}
    }
}
相关问题