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) } } })