arrays - 使用结构数组子集的 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
这个语句的一部分,Dictionary(grouping: eventRecords, by: {$0.evType}).map
因为我只想要 EventRecord 结构的一个子集。可以不遍历所有记录来完成吗?由于我是新手,因此将不胜感激任何建议。
解决方案
最简单的方法是使用reduce(into:)
这样您就可以一步完成映射和分组
let suggestionsDict = eventRecords.reduce(into: [:]) {
$0[$1.evType, default: []].append($1.evMainTxt)
}
推荐阅读
- unity3d - 球在统一 3d 中意外跳跃
- android - 访问开关按钮的内部类变量
- javascript - Nodejs tcp服务器和客户端之间的双向对话
- javascript - Chrome 扩展将 onClicked 操作添加到子上下文菜单项
- javascript - 如何在将画布转换为 blob 时设置文件名?
- ibm-cloud - 访问 Bluemix Node-RED 编辑器时出错
- java - 为什么不能用 Java 编写协方差?
- graphics - 如何使用 CGAL 渲染多边形?
- mysql - 是什么导致mysql表发生这种情况?
- c++ - VS2017 C++ 中的 LIBCURL 错误 :: 错误 LNK2019: unresolved external symbol _curl_easy_init