我有课:
class DisplayTime {
var time: Schedules
init (time: Schedules){
self.time = time
}
}
Schedules
-具有下一个属性的类:class Schedules: Object {
dynamic var hour = 0
dynamic var minute = 0
dynamic var groupIndex = 0
}
所以,我想得到
Dictionary
,其中key-hour和value-array是Schedules
-var dictTime: [Int:[Schedules]]
我试过,但没有成功:
func groupBy() -> [Int:[Schedules]]{
let displayTime = self.displayTimes
var dictTime: [Int:[Schedules]] = [:]
for i in 0..<displayTime.count {
dictTime[displayTime[i].time.hour] = [displayTime[i].time]
}
print (dictTime)
return dictTime
}
我了解-该函数只创建了[key:[one_value]],但我可能为一个key创建了多个值,如何处理该变量?(如果key_now repeat key_before->将key_now添加到数组计划,将key_添加到key_before。)。
最佳答案
使用the extension shown in this answer中的categorise(_:)
方法,您可以简单地说:
let dictTime = displayTimes.lazy.map{$0.time}.categorise{$0.hour}
map(_:)
用于遍历每个time
的DisplayTime
,而lazy
用于防止创建中间数组。