2017-01-09 40 views
0

我有类:集团从Array到词典

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 - 小时,和值 - 的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 

    } 

我明白 - 该函数只创建[键:[one_value]],但我可能有一个键的几个值,如何处理该变体? (如果key_now重复key_before - >添加到阵列时刻表key_now到key_before

+0

参见[如何通过在一个斯威夫特数组的元素组(http://stackoverflow.com/q/31220002/2976878) – Hamish

+1

最后一位用户使用exce借给冬季帽子的帽子:-) – shallowThought

+0

@Hamish,是的,我看到它,但我不能在我的功能(( –

回答

2

the extension shown in this answer使用categorise(_:)方法,你可以简单地说:

let dictTime = displayTimes.lazy.map{$0.time}.categorise{$0.hour} 

​​为了用于遍历的time每个DisplayTimelazy是为了防止中间阵列的创建中使用。