如何正确获得一套EKCalendars

时间:2018-07-11 14:57:51

标签: ios swift ekeventstore ekcalendar

我现在开发一个iOS应用程序,其中显示iCloud EKCalendars的列表。 我的快捷代码可以获取一组iCloud EKCalendar,但是顺序总是不同的。 谁能给我建议以使套装井井有条?

let eventStore = EKEventStore()
let sources = eventStore.sources
for source in sources {
    if (source.title == "iCloud") {
        let calendars = source.calendars(for: .event)
        for calendar in calendars {
            print("calendar title = " + calendar.title)
        }
    }
}

代码结果示例:

calendar title = title1
calendar title = title6
calendar title = title5
calendar title = title3
calendar title = title4
calendar title = title2

2 个答案:

答案 0 :(得分:0)

因此,let calendars = source.calendars(for: .event)的类型为Set<EKCalendar>,根据定义,Set的数据类型是无序的,因此只要您遍历集合,它就始终可以是不同的顺序,唯一的Set强制执行的操作是,该对象集只有一个实例。

如果要订购日历,则必须自己订购,一种是通过titlecalendarIdentifier订购。

答案 1 :(得分:0)

sortSet,结果是一个有序数组:

let eventStore = EKEventStore()
let sources = eventStore.sources.filter{ $0.title == "iCloud" }
for source in sources {
    let calendars = source.calendars(for: .event).sorted{ $0.title < $1.title }
    calendars.forEach { print("calendar title = ", $0.title) }
}
相关问题