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

使用结构数组子集的Swift字典

如何解决使用结构数组子集的Swift字典

我正在尝试使用分组从结构数组中创建字典,但运气不佳(我发现了一种遍历每条记录的方式,但希望有一个更优雅的解决方案)...

var eventRecords =  [EventRecord]()

结构看起来像这样(用于在CloudKit中存储记录)

public struct EventRecord {
    public var evDate: Date
    public var evType: Int
    public var evMainTxt: String
    public var evNote: String?
    public var evVal1: Int?
    public var evVal2: Int?
}

我希望完成的是一本词典,其中键是evType ,而值是[evMainTxt] 。字典定义为

var suggestionsDict = [Int: [String]]()

我从Dictionary(grouping: eventRecords,by: {$0.evType})开始,但是我在声明.map的{​​{1}}部分苦苦挣扎,因为我只想要EventRecord结构的子集。可以对所有记录进行迭代吗?由于我是新手,因此我们将不胜感激。

解决方法

最简单的方法是使用reduce(into:),以便您可以一步一步映射和分组

let suggestionsDict = eventRecords.reduce(into: [:]) {
    $0[$1.evType,default: []].append($1.evMainTxt)
}

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