gpt4 book ai didi

swift - 如何将值与 NSdictionary 的相似键合并

转载 作者:搜寻专家 更新时间:2023-11-01 05:32:31 25 4
gpt4 key购买 nike

你好,我有这样的情况,我得到了这样的服务器原始响应

(
{
"Nov 2018" = {
AudioFileURL = "https://www.GeorgeA.m4a";
AudioFileText = "GeorgeA";
};
},

{
"Nov 2018" = {
AudioFileURL = "https://www.GeorgeB.m4a";
AudioFileText = "Georgeb";
};
},
{
"Nov 2018" = {
AudioFileURL = "https://www.Georgec.m4a";
AudioFileText = "Georgec";
};
},
{
"Sep 2018" = {
AudioFileURL = "https://www.GeorgeB.m4a";
AudioFileText = "GeorgeD";


};
}
)

现在我想将所有值与相同的键结合起来,以便我可以在 UITableView Controller 的部分中使用它们。有人可以为此提供一些指导吗。

我正在寻找的输出是这样的

(
{
"Nov 2018" = {
[AudioFileURL = "https://www.GeorgeA.m4a";
AudioFileText = "GeorgeA"],

[AudioFileURL = "https://www.GeorgeB.m4a";
AudioFileText = "GeorgeB"],

[AudioFileURL = "https://www.GeorgeC.m4a";
AudioFileText = "GeorgeC"];

};
},
{
"Sep 2018" = {
[AudioFileURL = "https://www.GeorgeB.m4a";
AudioFileText = "GeorgeD";]


};
}
)

最佳答案

首先在一个单元格中创建一个表示您想要的信息的结构:

struct AudioFileInfo {
let urlString: String
let text: String

init(dict: [String: String]) {
urlString = dict["AudioFileURL"] ?? ""
text = dict["AudioFileText"] ?? ""
}
}

struct CellInfo {
let date: String
let audioFileInfos: [AudioFileInfo]
}

然后你可以:

let cellInfos = response
.flatMap {
$0.map { ($0.key, AudioFileInfo(dict: $0.value)) }
}
.reduce([CellInfo]()) { partial, item in
var new = partial
if let index = partial.index(where: { $0.date == item.0 }) {
new[index] = CellInfo(date: partial[index].date, audioFileInfos: partial[index].audioFileInfos + [item.1])
}
else {
new.append(CellInfo(date: item.0, audioFileInfos: [item.1]))
}
return new
}

这将为您提供一组 CellInfo 对象。

作为一般规则,这就是您解决此类问题的方式。首先定义一个表示所需输出的类型,然后操作输入,直到创建该类型的对象。 Playground 是这类事情的 friend 。

关于swift - 如何将值与 NSdictionary 的相似键合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53502339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com