((我以前从未使用过Swift或Xcode,所以这可能是一个愚蠢的问题)
为了找出问题,我在Xcode 11中创建了一个完全空的“ App”,并将其放入AppDelegate.swift
:
import Cocoa
import EventKit
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
private let eventStore = EKEventStore()
func applicationDidFinishLaunching(_ aNotification: Notification) {
eventStore.requestAccess(to: .event) { granted, error in
if granted {
print("GOOD: Access granted")
} else {
print("BAD: Access denied")
}
}
}
}
当我运行该应用程序(通过cmd + R)时,我立即看到它拒绝访问,而没有给我机会来批准访问:
Metal API Validation Enabled
BAD: Access denied
我在做什么错?如何获得允许我批准访问日历事件的权限?
请注意,我注意到the docs说:
[要访问用户的日历数据,所有沙盒化macOS应用都必须包含com.apple.security.personal-information密钥。
所以我像在App_Name.entitlements
中那样进行了更改,但这没有帮助:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.personal-information</key>
<true/>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
</dict>
</plist>
已修复。我错了2件事:
com.apple.security.personal-information
]不正确。只需输入“日历”即可自动填写正确的内容。Info.plist
文件中,我需要“隐私-日历用法说明”以具有一个值。我在这里发现:https://forums.developer.apple.com/thread/110825