这是我的代码:
let newCalendar = EKCalendar(for: .event,eventStore: eventStore)newCalendar.Title = "Some Calendar name"let sourcesInEventStore = eventStore.sourcesnewCalendar.source = sourcesInEventStore.filter{ (source: EKSource) -> Bool in source.sourceType.rawValue == EKSourceType.local.rawValue }.first!
我完全关闭了我的iCloud,仍然无法获得本地资源.
我也试图让这个与iCloud打开工作,我想出了这个代码,但它不起作用
for let source in eventStore.sources { if(source.sourceType == EKSourceType.calDAV && source.Title == "iCloud") { newCalendar.source = source } } if(newCalendar.source == nil) { for let source2 in eventStore.sources { if(source2.sourceType == EKSourceType.local) { newCalendar.source = source2 } } }解决方法 一些问题:
您的代码崩溃了,因为您首先从空数组中强制解包.以下是一些建议,以确保EKSource对象数组返回非空数组.
首先,要求用户使用EKEventStore实例上的requestAccess(to :)访问其日历.其次,使用if let从过滤后的数组中展开可能的可选值:
let eventStore = EKEventStore()eventStore.requestAccess(to: .event) { (granted,error) in if granted { let newCalendar = EKCalendar(for: .event,eventStore: eventStore) newCalendar.Title = "Some Calendar name" let sourcesInEventStore = eventStore.sources let filteredSources = sourcesInEventStore.filter { .sourceType == .local } if let localSource = filteredSources.first { newCalendar.source = localSource } else { // Somehow,the local calendar was not found,handle error accordingly } } else { // check error and alert the user }}总结
以上是内存溢出为你收集整理的ios – 创建日历,即使关闭iCloud也没有本地来源全部内容,希望文章能够帮你解决ios – 创建日历,即使关闭iCloud也没有本地来源所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)