[英]Compilation errors in xCode 7 + Swift 2.0
由於我已經安裝了xCode 7 beta2 + Swift 2.0,因此我的應用程序出現了一些錯誤。 例如,我收到以下錯誤
“無法使用類型為((EKEntityType,完成:(Bool,NSError!)-> _))的參數列表調用'requestAccessToEntityType'
在這部分代碼中:
eventStore.requestAccessToEntityType(EKEntityType.Event,
completion: {(granted: Bool, error:NSError!) in
if !granted {
print("Access to store not granted")
}
})
另外這個錯誤:
無法使用類型為((NSDate,endDate:NSDate,calendars:[AnyObject])'的參數列表調用'predicateForEventsWithStartDate'
在這部分代碼中:
calendarsPrueba.addObject(calendarWithName("US Holidays")!)
var predicate2 = eventStore.predicateForEventsWithStartDate(startDate, endDate: endDate, calendars: calendarsPrueba as [AnyObject])
有人知道如何解決此問題嗎? 沒有關於此的Apple文檔
與@HAS一樣的問題-您是否運行了遷移器? Swift 1.2和Swift 2.0之間存在許多不兼容的更改。 代碼必須遷移或手動修復。
requestAccessToEntityType
錯誤...
無法使用類型為((EKEntityType,完成:(Bool,NSError!)-> _))的參數列表調用'requestAccessToEntityType'
...在那里是因為您的類型是(Bool, NSError!) -> Void
而不是(Bool, NSError?) -> Void
。 更換NSError!
與NSError?
要解決這個問題。
檢查文檔,簽名為:
typealias EKEventStoreRequestAccessCompletionHandler = (Bool, NSError?) -> Void
predicateForEventsWithStartDate
無法使用類型為((NSDate,endDate:NSDate,calendars:[AnyObject])'的參數列表調用'predicateForEventsWithStartDate'
簽名是:
func predicateForEventsWithStartDate(_ startDate: NSDate,
endDate endDate: NSDate,
calendars calendars: [EKCalendar]?) -> NSPredicate
使用as [AnyObject]
您正在嘗試傳遞[AnyObject]
而不是[EKCalendar]
。 要解決此問題,請將calendarsPrueba
聲明為:
var calendarsPrueba: [EKCalendar]
並且不要將其[AnyObject]
為[AnyObject]
。
有人知道如何解決此問題嗎? 沒有關於此的Apple文檔
有。 請始終閱讀發行說明,在其中可以找到所有更改的摘要。 然后重新檢查文檔,因為正如我所寫的,您會發現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)
}
}
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.