在加载单元格之前过滤内容

Filtering content before loading cells

我得到了在加载单元格之前需要过滤的数据模型。具有以下结构:

struct Food: Decodable {
 let title: String?
 let content: [Category]?
}

struct Category: Decodable {
 let title: String?
 let items: [FoodItem]?
}

struct FoodItem: Decodable {
 let title: String?
 let image: URL?
 let summary: String?
}

我将它们加载到 UICollectionView 上。我只想要 titleimagesummary 的内容。我可以用项目过滤类别。如何在整个 Food 数据模型中传播。从技术上讲,我可以 for 循环这个。我想知道我可以向每个模型添加一个通用的 protocol/function 来实现相同的效果。

使用

过滤项目
var filteredItem: Bool {
   return title != nil && summary != nil && image != nil
}

基本上,您要找的是 filter(_:) 方法,您可以这样使用:

我认为你有一个 Food 数组,所以你想过滤它,因为每个食物的 content ([Category]) 必须包含 items ([FoodItem]) 具有非零属性:

// arr: [Food]
let filteredFood = arr.filter { food -> Bool in
    var bool = false
    food.content?.forEach { [=10=].items?.forEach({ foodItem in
        bool = foodItem.title != nil && foodItem.summary != nil && foodItem.image != nil
    })}
    return bool
}