我有课:

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(_:)用于遍历每个timeDisplayTime,而lazy用于防止创建中间数组。

09-30 16:47