【问题标题】:Authorization Error at Event Kit. [Command Line Tool]事件工具包中的授权错误。 [命令行工具]
【发布时间】:2019-08-16 02:29:16
【问题描述】:

我已经创建了 MacOS 命令行应用程序。但是,尝试访问 EKEventStore 时出现以下错误。

CoreData:XPC:无法加载元数据:错误 Domain=NSCocoaErrorDomain Code=134070 "出现错误 持久存储。” UserInfo={问题=请求失败,不足 权限}

在 Mac Os Sierra 中这很好用。但是当升级到 Mojave 时,它​​给了我这个错误。

ma​​in.swift:

import Foundation
import EventKit

let store = EKEventStore()

print("asdasd")

info.plist:

<?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>CFBundleIdentifier</key>
        <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0</string>
        <key>CFBundleVersion</key>
        <string>1</string>
        <key>Privacy – Calendars Usage Description</key>
        <string>You have to give permission to access your calendar sources</string>
    </dict>
</plist>

应用程序从编译的命令行文件运行。但是,它不启用调试。感谢您的建议。

【问题讨论】:

  • 你能在别处找到答案吗?
  • 我也有这个问题。我认为问题在于 LLDB 没有权限在 ~/Library/Calendars/Calendar Cache 创建持久存储。

标签: swift macos eventkit


【解决方案1】:

我在 Catalina 上也看到了这种行为。 唯一的解决方法是使用已弃用的 objc 调用:

store = [[EKEventStore alloc] initWithAccessToEntityTypes:EKEntityMaskReminder];

我对结果不做任何事情,但在第一次通话时,弹出窗口会询问 >terminal

我写了一个导出提醒的工具,它使用这个: Tool to Export Reminders

【讨论】:

  • 这对我不起作用;即使我在 Objective-C 中使用了不推荐使用的调用,我也遇到了同样的错误。
  • 您是否尝试过我编写的工具的源代码,它对我有用? (试一试。)您是否在项目中设置了访问标志,授予所需资源?
  • 我刚刚尝试了你的工具,当我在 XCode 中运行它时,仍然得到相同的“请求失败,权限不足”输出。
  • 您是否在 Mac->Systemsettings->Security->Privacy->Reminders->Allow Terminal access to Reminders 中设置了标志?如果您从终端运行该工具,这很重要。
  • 在终端中运行程序时,我对日历事件/提醒没有任何问题,无论是使用EKEventStore() 还是已弃用的 Objective-C 代码。我的问题是在 XCode 中运行它或使用 LLDB 时它不起作用。我已允许 XCode 在我的系统偏好设置中访问我的日历和提醒。
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多