swift - 在 Swift 4 中向数组添加过滤器

标签 swift swift4

我有一个结构,它是我的数据模型:

import Foundation

struct Item : Codable {

var cat:String
var name:String
var createdAt:Date
// more 
var itemIdentifier:UUID
var completed:Bool

func saveItem() {
    DataManager.save(self, with: itemIdentifier.uuidString)
}

func deleteItem() { DataManager.delete(itemIdentifier.uuidString)
}

mutating func markAsCompleted() {
    self.completed = true
    DataManager.save(self, with: itemIdentifier.uuidString)
}

然后在我的 ViewController 中,我有以下代码来加载数据,这些数据将进入 TableView(按创建日期排序)。

func loadData() {
    items = [Item]()
    items = DataManager.loadAll(Item.self).sorted(by: {
        $0.createdAt < $1.createdAt })
    tableView.reloadData()
}

现在我想添加一个过滤器,以便只有类别进入 TableView。例如,仅当猫等于“花园”时。

如何添加?

最佳答案

使用过滤。

这是一个未过滤的 array 示例:

var unfilteredItems = ...

过滤代码如下:

var filteredItems = unfilteredItems.filter { $0.cat == "garden" }

代码如下:

func loadData() {
    items = [Item]()
    items = DataManager.loadAll(Item.self).sorted(by: {
        $0.createdAt < $1.createdAt }).filter { $0.cat == "garden"}

    tableView.reloadData()
}

关于swift - 在 Swift 4 中向数组添加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467867/

相关文章:

swift - 消除复杂闭包返回类型的歧义 (foo -> _)

swift - 快速增加年份设置日历单位月份

swift 错误 : 'Sequence' requires the types 'T' and 'ArraySlice<T>' be equivalent

ios - Swift 4 中的可选闭包

ios - 是否可以在一个单元格中推送 2 个表格 View ?

ios - 导入文本和图像 swift Map Kit

ios - 如果方向改变,如何设置框架?

xcode - 在 swift4 中制作圆形按钮

swift - XLPagerTabStrip:如何使用 ButtonBarPagerTabStripViewController 为不同的选项卡添加不同的栏按钮

ios - 解析 JSON 并将其变为变量