微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

快速根据匹配值迭代字典和过滤器数组

如何解决快速根据匹配值迭代字典和过滤器数组

我有如下数据:

[["-MXpvzmZdbqzrjND8w9F": {
    lid = "-MW6eEidZFCLeeZ0uBk1";
    message = hi;
    timeStamp = 1617960107264;
    title = "Sambhar Dosa";
    user = 1QSU0c1q8QNrZzmICXGClC0o86E3;
},"-MXq5NAyrkk4ZcvRFM7T": {
    lid = "-MW6eEidZFCLeeZ0uBk1";
    message = "how ru?";
    timeStamp = 1617962828647;
    title = "Sambhar Dosa";
    user = 1QSU0c1q8QNrZzmICXGClC0o86E3;
}],["-MXqa5-pkC28lY_Q_hpZ": {
    lid = "-MWwEpHAhIdhN0i5sltB";
    message = "hi nice cycle";
    timeStamp = 1617971142820;
    title = "Cycle for kids";
    user = 1QSU0c1q8QNrZzmICXGClC0o86E3;
}]]

在这个值由变量 testarray 定义。为方便起见而给出的名称。 测试数组是 var testArray = [String: [String: Any]]

内部字典使用结构定义如下:

struct SomeData1
{
let dict: [String: Any]

var lid: String? { dict["lid"] as? String }
var message: String? { dict["message"] as? String }
var timeStamp: Double { dict["timeStamp"] as? Double ?? 0.0 }
var title: String? { dict["title"] as? String }
var user: String? { dict["user"] as? String }
var owner: String? { dict["owner"] as? String }
   
}

所以 testarray 也可以读作 var testArray = [String: [SomeData1]]

现在根据上述数据,当盖子与特定值匹配时,只有这些数据存储在名为 dataTodisplay 的变量中,该变量定义为 var dataTodisplay = SomeData1

我使用下面的代码过滤了上面的数据

     var sortStep1 = self.testArray.map {
                dict in dict.map {
                ($0.key,SomeData1(dict: $0.value))
                }.filter {$0.1.lid == self.listid}
    }

print("sortStep1 is",sortStep1)

sortStep1 显示的值为

[[("-MY5aPJ--Xoot_wlGSqS",Hungry.ChatVC.someData1(dict: ["owner": bPqDIJvYX7g7ZhE8ap0TgeYMYjE2,"lid": -MW6eEidZFCLeeZ0uBk1,"user":1Zq3Q3Q30C1000000uBk1,"user":1Zq3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q3Q5C100000S ": hi,"title": Sambhar Dosa])),("-MY5b-WT4AoWWa7c1eQT",Hungry.ChatVC.someData1(dict: ["title": Sambhar Dosa,"message": nice product,"user": 1QSU0c1q8QNrZzmICXGClC0o8E,"timeStamp": 1618239817904,"owner": bPqDIJvYX7g7ZhE8ap0TgeYMYjE2])],[]]

这里也显示一个空数组。我不想要这个空数组。我只想显示匹配的列表。 获取匹配盖子的代码是否正确?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。