我现在开发一个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
答案 0 :(得分:0)
因此,let calendars = source.calendars(for: .event)
的类型为Set<EKCalendar>
,根据定义,Set
的数据类型是无序的,因此只要您遍历集合,它就始终可以是不同的顺序,唯一的Set
强制执行的操作是,该对象集只有一个实例。
如果要订购日历,则必须自己订购,一种是通过title
或calendarIdentifier
订购。
答案 1 :(得分:0)
仅sort
和Set
,结果是一个有序数组:
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) }
}