2016-10-28 7 views
4

これは非常に簡単ですが、私はOSX上のカレンダーにアクセスするために数日間苦労してきました。 App Sandbox機能を有効にして、App Dataの[Calendar]ボックスにチェックを入れました。あなたが見ることができるように、私が追加したコードの行だけがEventKitをインポートするとeventControlを初期化するためにあるSwiftのOSX SierraでEKEventStoreを使用してカレンダーにアクセスする際の問題3

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

:私は、次のView Controllerクラスと非常にシンプルなアプリを作成しました。

私がデバッグでこれを実行すると、私は右の権限を取得する方法を考え出すことはできません

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"; 
} 

eventControl初期化ラインでエラーが発生します。

私はXcodeの8.1とMacOSのシエラを使用しています10.12.1

+0

さらに多くのテストを行った結果、このエラーが報告されても、コードは正しく実行されているようです。 'eventControl'は有効なオブジェクトに設定されており、そのオブジェクトに対してEventKit操作を正常に実行することができます。私はこのエラーが問題を引き起こさないと信じています。 – PatrickR

答えて

0

誰がこれを考え出していますか? 私は同じ問題を抱えていますが、イベントストア内の何かにアクセスしようとすると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)) 
関連する問題