Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 4通过外键将数组映射到字典_Ios_Arrays_Swift_Dictionary_Mapping - Fatal编程技术网

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

Ios Swift 4通过外键将数组映射到字典,ios,arrays,swift,dictionary,mapping,Ios,Arrays,Swift,Dictionary,Mapping,我有一个对象数组(外键为classId): 我正在尝试将其映射到具有classId键的字典,该键如下所示: [1:[Student], 2:[Student]] 有没有一个好的方法可以用字典来做到这一点? 我的解决方案是使用for循环遍历数组并将每个对象添加到字典中,但这似乎效率低下 Swift 4允许您实例化按键分组的词典。这是关于它的。下面是一个例子: let studentArray = [Student(id:3, name:"John", classId:1), Student(id

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

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

[1:[Student], 2:[Student]]
有没有一个好的方法可以用字典来做到这一点?
我的解决方案是使用for循环遍历数组并将每个对象添加到字典中,但这似乎效率低下

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

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})

@莱奥达布斯:我也喜欢这样,但我怀疑他有点新,所以我做了一些更具可读性的事情。:)@阿德里安忘了提到字典(分组:studentArray){$0.classId}@LeoDabus谢谢。
let dictByKeyVersionTwo = Dictionary(grouping: studentArray, by: {$0.classId})