2016-10-28 4 views
4

이것은 매우 간단하게 보이지만 OSX에서 캘린더에 액세스하는 데 며칠 동안 고생했습니다. 앱 샌드 박스 기능을 사용 설정했는데 앱 데이터의 '캘린더'확인란을 선택했습니다. 나는 다음 뷰 컨트롤러 클래스와 매우 간단한 응용 프로그램을 만들었습니다 : 당신이 볼 수 있듯이, 내가 추가 한 코드의 유일한 라인 EventKit를 가져올하고 eventControl을 초기화 할 수 있습니다OSX Sierra on Swift 3에서 EKEventStore를 사용하여 캘린더에 액세스 할 때 문제가 있습니다.

import Cocoa 
import EventKit 

class ViewController: NSViewController { 

    var eventControl = EKEventStore() 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override var representedObject: Any? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 
} 

. 내가 디버그에서이 프로그램을 실행할 때

, 나는 내가 올바른 권한을 얻는 방법 작동하지 않을 수 eventControl 초기화 라인

2016-10-28 15:02:00.056521 calendarTest[4105:847101] CoreData: XPC:  Unable to load metadata: Error Domain=NSCocoaErrorDomain Code=134070 "An error occurred in the persistent store." UserInfo={Problem=request failed, insufficient permission} 
2016-10-28 15:02:00.057742 calendarTest[4105:847101] [error] error: -addPersistentStoreWithType:NSXPCStore configuration:(null) URL:file:///Users/patrickramsden/Library/Calendars/Calendar%20Cache options:{ 
    NSInferMappingModelAutomaticallyOption = 1; 
    NSMigratePersistentStoresAutomaticallyOption = 1; 
    agentOrDaemon = 1; 
    serviceName = "com.apple.CalendarAgent.database"; 
} ... returned error Error Domain=NSCocoaErrorDomain Code=134070 "An error occurred in the persistent store." UserInfo={Problem=request failed, insufficient permission} with userInfo dictionary { 
    Problem = "request failed, insufficient permission"; 
} 

에서 오류가 발생합니다.

내가 엑스 코드 8.1 맥 OS 시에라을 사용하고 10.12.1

+0

추가 테스트를 거친 후에도이 오류가보고되었지만 코드가 여전히 올바르게 실행되는 것으로 보입니다. 'eventControl'이 유효한 객체로 설정되어 있고 그 객체에 대한 EventKit 작업을 성공적으로 실행할 수 있습니다. 이 오류로 인해 문제가 발생하지 않는다고 생각합니다. – PatrickR

답변

0

다른 사람이 알아 냈습니까? 동일한 문제가 발생했지만 Store에서 이벤트를 액세스하려고 시도하면 nil이 반환됩니다. "액세스 권한이 부여 된 경우에도". 예 :

let eventStore = EKEventStore() 
switch EKEventStore.authorizationStatus(for: .event) { 
    case .authorized: 
    print("Access Granted") 
    break 
    case .denied: 
    print("Access denied") 
    case .notDetermined: 
    eventStore.requestAccess(to: .event, completion: 
     {(granted: Bool, error: Error?) -> Void in 
     if granted { 
      print("Access Granted") 

     } else { 
      print("Access denied") 
     } 
    }) 
    break 
    default: 
    print("Case Default") 
    break 
} 

print(eventStore.calendars(for: .event))