簡體   English   中英

xCode 7 + Swift 2.0中的編譯錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM