如何解决快速根据匹配值迭代字典和过滤器数组
我有如下数据:
[["-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 举报,一经查实,本站将立刻删除。