Swift 4 通过外键将数组映射到字典

Posted

技术标签:

【中文标题】Swift 4 通过外键将数组映射到字典【英文标题】:Swift 4 map an array to a dictionary by foreign key 【发布时间】:2018-07-18 12:03:35 【问题描述】:

我有一个对象数组(外键为classId):

let studentArray = [Student(id:3, name:"John", classId:1), Student(id:4, name:"Jane", classId:1), Student(id:5, name:"Bill", classId:2)]

我正在尝试将其映射到带有 classId 键的字典,如下所示:

[1:[Student], 2:[Student]]

有没有使用字典的好方法? 我的解决方案是使用 for 循环遍历数组并将每个对象添加到字典中,但这似乎效率低下。

【问题讨论】:

【参考方案1】:

Swift 4 允许您实例化按键分组的字典。这是more detail 关于它。这是一个例子:

let studentArray = [Student(id:3, name:"John", classId:1), Student(id:4, name:"Jane", classId:1), Student(id:5, name:"Bill", classId:2)]


let dictByKeyVersionOne = Dictionary(grouping: studentArray, by: student in student.classId)

或者,您可以使用$0.classId 创建字典,如下所示:

let dictByKeyVersionTwo = Dictionary(grouping: studentArray, by: $0.classId)

【讨论】:

@LeoDabus 我也喜欢这样,但我怀疑他有点新,所以我做了一些更具可读性的东西。 :) @Adrian 忘了提Dictionary(grouping: studentArray) $0.classId @LeoDabus 谢谢。

以上是关于Swift 4 通过外键将数组映射到字典的主要内容,如果未能解决你的问题,请参考以下文章

从字典数组映射到 Swift 中的数字数组

将字典映射到 Swift 中的结构数组

CoreData:从字典数组插入到SQLite数据库中发生未排序 - 因此无法设置外键

哈希表——swift字典的实现原理

Swift4.2~数组和字典(Array, Dictionary)基本类型转换

Swift 3:数组到字典?