xCode 7 + Swift 2.0中的编译错误

由于我已经安装了xCode 7 beta2 + Swift 2.0,在我的应用程序中出现了一些错误。 例如,我收到以下错误

“无法使用types为”(EKEntityType,completion:(Bool,NSError!) – > _“)的参数列表调用'requestAccessToEntityType'

在这部分代码中:

eventStore.requestAccessToEntityType(EKEntityType.Event, completion: {(granted: Bool, error:NSError!) in if !granted { print("Access to store not granted") } }) 

另外这个错误:

无法用types为“(NSDate,endDate:NSDate,calendar:[AnyObject])”的参数列表调用“predicateForEventsWithStartDate”

在这部分代码中:

 calendarsPrueba.addObject(calendarWithName("US Holidays")!) var predicate2 = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: calendarsPrueba as [AnyObject]) 

有人知道如何解决这个问题? 这里没有苹果文档

和@HAS一样的问题 – 你是否运行过迁移器? 很多Swift 1.2和Swift 2.0之间的不兼容的变化。 代码必须被迁移或手动修复。

requestAccessToEntityType

错误…

无法使用types为“(EKEntityType,completion:(Bool,NSError!) – > _”)的参数列表调用“requestAccessToEntityType”

…是因为你的types是(Bool, NSError!) -> Void而不是(Bool, NSError?) -> Void 。 replaceNSError!NSError? 要解决这个问题。

检查文件,签名是:

 typealias EKEventStoreRequestAccessCompletionHandler = (Bool, NSError?) -> Void 

predicateForEventsWithStartDate

无法用types为“(NSDate,endDate:NSDate,calendar:[AnyObject])”的参数列表调用“predicateForEventsWithStartDate”

签名是:

 func predicateForEventsWithStartDate(_ startDate: NSDate, endDate endDate: NSDate, calendars calendars: [EKCalendar]?) -> NSPredicate 

与你的as [AnyObject]你试图通过[AnyObject]而不是[EKCalendar] 。 要解决这个问题,请将calendarsPrueba声明为:

 var calendarsPrueba: [EKCalendar] 

不要将它投射到[AnyObject]

有人知道如何解决这个问题? 这里没有苹果文档

有。 始终阅读发行说明,您可以在其中find所有更改的摘要。 然后重新检查文档,因为正如我写的,你可以发现Swift 1.2和Swift 2.0之间的许多重大变化。

这适用于Xcode 7 / swift 2:

 final func addToCalendar(){ let eventStore = EKEventStore() eventStore.requestAccessToEntityType(EKEntityType.Event, completion: { (granted, error) in if !granted { // Show alert... print("Access not allowed") print(error!.localizedDescription) } else { print("Access granted") let event = EKEvent(eventStore: eventStore) let uuid = NSUUID().UUIDString event.title = "sample Event " + uuid event.startDate = NSDate(); event.endDate = event.startDate.dateByAddingTimeInterval(60*60) event.calendar = eventStore.defaultCalendarForNewEvents do { try eventStore.saveEvent(event, span: .ThisEvent) } catch let error as NSError { print(error.localizedDescription) } } })