39

我最近更新到 macOS Catalina,因此我可以使用 Catalyst 更新我的一些应用程序以支持 Mac。每当我运行该应用程序并尝试访问 CloudKit 数据时(我使用 CloudKit 同步核心数据,如果 iCloud 帐户可用,则数据),然后它会因以下错误而崩溃。[User Defaults] Couldn't write values for keys ( ApplicationAccessibilityEnabled ) in CFPrefsPlistSource<0x600002c07700> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

我尝试在我的签名和功能中更改应用沙盒设置中的权限和访问权限,以读取/写入。我还尝试将传入和传出连接更改为打开。

我不确定我应该显示什么代码,所以这里是崩溃的区域。

if isICloudContainerAvailable() {
            print("iCloud Available")
            let container = NSPersistentCloudKitContainer(name: "Shopping_App")
            
            container.loadPersistentStores(completionHandler: {
                (storeDescription, error) in
                if let error = error as NSError? {
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })

            return container
}

我除了创建/获取 CoreData 数据的应用程序,如果可用(在这种情况下)连接到 CloudKit 同步数据。但它现在崩溃了,甚至在它提出任何让我认为它在 AppDeleget 某处崩溃的视图之前。

10 月 14 日更新——我发现如果我强制跳过应用程序崩溃的断点,我可以继续进入应用程序并且它工作正常。这让我认为错误确实在 AppDeleget 中,特别是说 UI 直到我跳过它在崩溃时设置的断点后才会出现。

11 月 4 日更新——所以这个问题变得更加奇怪了。我忘记了我使用的是 Xcode 的 beta 版本,所以好吧,这可能是在我上周意识到这一点之后。我尝试通过公共版本运行该应用程序,该应用程序从未停止过断点,而是完全崩溃Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)。这个错误真的很奇怪。这是我应该向 Apple 报告的错误吗?我想过这样做,但我决定不这样做,因为在我看来,这似乎是我本来可以做的事情,但现在正在重新考虑我是否应该这样做。我希望我能找到这个问题的解决方案,因为我想向公众发布 macOS 版本,但没有找到解决方案的运气。

11 月 8 日更新——在 Xcode 11.2.1 GM 种子中,问题仍然存在。我还没有找到这个问题发生的确切原因,但会继续尝试。我也无法在任何 Xcode 版本上重现 11 月 4 日更新中写入的错误。我还没有找到任何其他东西,但想用有关 GM 种子的信息以及这种情况是否仍然发生来更新它。

11 月 13 日更新——我决定继续将应用程序上传到 Apple 以供批准,因为构建应用程序并独立于 Xcode 运行它工作得很好。Apple 批准了该应用程序,没有对此问题提出任何投诉。这似乎只是一个 Xcode 问题。但是,我将继续更新此内容,如果/当我找到解决方案时,我将发布此问题的解决方案,但没有找到更多解决方法或解决此问题的方法。

11 月 20 日更新——在 Xcode 11.3 Beta Build 11C24b 上,问题仍然存在。没有其他任何改变,我还没有找到其他任何东西来解决这个问题。我将继续保持更新,但还没有发现任何其他内容。

12 月 11 日更新——在 Xcode 11.3 Public 11C29 上,问题仍然存在。但是,现在它并不一致,有时我必须通过断点两次而不是一次才能继续启动应用程序。如果独立于 Xcode 运行,它仍然不会发生。

2020 年 1 月 2 日更新——仍然发生,但现在已验证它发生在真正的 iOS 13 设备上。但是没有找到其他解决方案或步骤。我将继续使用任何其他信息更新这篇文章。

2020 年 2 月 17 日更新——更新不多,但仍在 Xcode 11.4 Beta (11N111s) 上发生。将继续更新这篇文章,但没有太大变化。(也修正了这篇文章的一些错误)

2020 年 3 月 10 日更新——我没有意识到 Xcode beta 11N132i 已发布,但经过测试它仍然存在。然而,尽管它可能仍在发生,但至少不太一致。现在它不是每次都发生并这样做,它似乎有点随机。

2020 年 4 月 18 日更新——抱歉没有更新这篇文章,直到现在我都无法编程。我还没有弄清楚这个问题,但现在似乎并没有真正发生。它现在仍然很少发生。这也在 Xcode 11.4.1 (11E503a) 上,我不知道为什么。我会继续尝试更新这篇文章。谢谢你。如果您有任何建议来尝试找出原因,我愿意听取他们的意见。

2020 年 5 月 14 日更新——Xcode 11.5 Beta 2 (11N605f) 这个问题仍然随机发生,但现在它似乎并不总是包含错误,但仍指向那部分代码。感谢您对这篇文章的支持,当我发现更多关于这个问题的时候,我会继续更新它。

2020 年 6 月 5 日更新——很抱歉没有尽快更新,我完全忘记了我何时更新了 Xcode。在 Xcode 11.5 上,这个问题仍然存在。我也更新到 Catalina 10.15.5 并且几乎没有看到任何变化。但是,就像评论所说的那样,我听说 Catalina 10.15.4 确实对此有所帮助,但 10.15.5 似乎没有改变任何东西,这很奇怪。

2020 年 6 月 27 日、2020 年 7 月 22 日和 2020 年 8 月 10 日更新——我已更新我的项目以支持 Xcode 12,但它似乎仍然存在同样的问题。什么都没有真正改变,日志完全相同。我也欢迎所有愿意继续帮助解决此问题的人。这在 Xcode 12 Beta 2 上也是一样的。对于 beta 3 和 4,excat 相同。

2020 年 9 月 28 日更新——这仍然是 Xcode 12 的 GM 和公共版本的问题。我还没有更新到 Xcode 12.0.1,因为我正在等待 macOS Big Sur,但在这一点上,我怀疑这会解决它。我真的没有任何更新,除此之外它仍在发生,我找不到问题。

2020 年 11 月 3 日更新——这似乎仍然是 Xcode 12.1.1 Release Candidate 上的一个问题。很抱歉这么久没有更新这个,正如我之前所说的,我坚持更新 Xcode,但我决定继续更新。但是,更新到候选版本并没有改变任何东西,或者至少我没有注意到。我确实注意到了一个变化;然而,它似乎更早地显示了这个问题,但这可能只是它编译得更快。总而言之,这个问题没有重大变化,并且在一段时间内也没有真正改变。

更新 2020 年 11 月 16 日

我已经更新到 macOS Big Sur 11.0.1 并将 Xcode 更新到 12.3 beta。在不得不更改一些随机的东西以使其在 Big Sur 上运行后,问题似乎仍然存在。但是,我认为我更改的大多数内容都无关紧要,因为它主要与 UI 元素有关。这可能只是 Big Sur,但它编译得更快,而且错误现在显示得更快;但是它仍然是同样的错误。

4

3 回答 3

2

MasterChief96,你并不孤单。这是我的设置:

MacOS 10.15.3 Xcode 11.4.1

我创建了一个全新的 SwiftUI“Hello World”项目,将 Mac 作为目标设备,也就是 Catalyst。

我将 iOS 部署目标设置为 13.2(否则我会收到 MacOS 运行时错误,提示我需要 Catalina 10.15.4)

将 scheme 设置为“My Mac”,编译运行得到:

[User Defaults] Couldn't write values for keys
    ApplicationAccessibilityEnabled
    AccessibilityEnabled
    FullKeyboardAccessFocusRingEnabled
setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

由于它指的是沙盒,我将应用沙盒的“签名和功能”设置更改为包括用户选择的读/写和下载文件访问。

我挺Xcode,删除项目的Derived Data,打开项目运行。在 MacOS 上运行时,错误消息仍然存在。(在 iOS 上运行时我看不到这些消息。)

只是在这里猜测,但这似乎是 Catalyst 环境中的另一个错误?也许这个错误已在 Catalina 10.15.4 中修复,但该更新对我来说是一场灾难,我不得不将端口返回到 10.15.3。

于 2020-05-21T18:16:26.967 回答
0

对我来说,我收到了这个确切的错误消息,但是由于下一条错误消息指的是我的 Mac Catalyst 应用程序的 Info.plist 中缺少 CFBundleName ,所以发生了崩溃。

堆栈跟踪的片段:

(Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: No): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access
2020-06-27 11:01:52.403837-0700 Manga Relay D[17329:517025] [General] An uncaught exception was raised
2020-06-27 11:01:52.403908-0700 Manga Relay D[17329:517025] [General] *** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: title)
2020-06-27 11:01:52.404006-0700 Manga Relay D[17329:517025] [General] (
    0   CoreFoundation                      0x00007fff2eb82be7 __exceptionPreprocess + 250
    1   libobjc.A.dylib                     0x00007fff6795a5bf objc_exception_throw + 48
    2   CoreFoundation                      0x00007fff2ec3160e -[__NSCFString characterAtIndex:].cold.1 + 0
    3   CoreFoundation                      0x00007fff2ec3c17c -[__NSDictionaryM setObject:forKey:].cold.3 + 0
    4   CoreFoundation                      0x00007fff2eac0329 -[__NSDictionaryM setObject:forKey:] + 976
    5   UIKitCore                           0x00007fff6f5f2c8f -[_UIMenuBarItem properties] + 99
    6   UIKitMacHelper                      0x00007fff5fd6272a UINSNSMenuItemFromUINSMenuItem + 90
    ...

一旦我在“Bundle name”(又名 CFBundleName)中指定了一个名称,崩溃就消失了,但我仍然收到有关在应用程序容器之外设置首选项的错误消息。

更新更多详细信息:我的 Info.plist 的以下屏幕截图将 CFBundleName 定义为我的用户定义变量$(MangaRelayBundleDisplayName),我发现我从未在任何地方定义过它,因此导致崩溃的原因是 nil。当我输入诸如“我的应用程序”之类的值时,崩溃就消失了。现在,这个解决方案与原始问题无关,基本上我被“沙盒访问”警告误导了,但我认为可能还有其他人被警告误导。

Info.plist 截图

我在 macOS 10.5.5 和 Xcode 11.5 上。

于 2020-06-27T18:10:49.617 回答
-1

我有同样的问题。通过删除“所有运行时问题”断点解决。

测试后,

  • 线程撒旦(运行时问题)工作正常
  • 未定义的行为(运行时问题)工作正常
  • 主线程检查器(运行时问题)工作正常
  • 系统框架(运行时问题)BREAK
于 2020-08-02T22:56:48.590 回答