由于 CoreData 无法创建构建:应用程序中没有核心数据时 API 滥用,并且应用程序为所有模拟器构建

Posted

技术标签:

【中文标题】由于 CoreData 无法创建构建:应用程序中没有核心数据时 API 滥用,并且应用程序为所有模拟器构建【英文标题】:Unable to create a Build due to CoreData: API Misuse when there's no Core Data in the App, and the app builds for all Simulators 【发布时间】:2022-01-16 21:26:14 【问题描述】:

我正在尝试创建构建(任何 ios 设备 (arm64)),但出现错误:

/.../CoreData:1:1:API 滥用:尝试序列化非拥有协调器上的存储访问(PSC = 0x60000381b8e0,存储 PSC = 0x0)

该应用程序可以在所有模拟器以及真实设备(在 3 台不同的 iPhone 上测试)上编译和运行,没有任何错误。我在控制台中没有日志,只有错误,甚至没有警告。

我的应用没有使用 Core Data。 我只在 UserDefaults 中保存了几个用户设置。

设置: Xcode 13.1(但同样的事情发生在 Xcode 12 上)、Cocoapods、Swift 5、macOS Big Sur、SwiftUI 2.0 + Combine,我支持来自 iOS 14+ 的目标

我已经尝试过的:

我已查看资产文件夹 - 没有重复的名称,它不是空的。 我删除了 Lottie,它放在资产中的文件没有帮助。 我已经更新了我所有的 pod。 我已尝试清理派生数据、清理构建、重新安装 pod 并重新启动 Mac。 我的代码中没有Data(contentsOf:url)

知道为什么会发生这种情况吗?

This post 没有帮助,我已经尝试了所有建议的选项。它们都不适用于这里。 This实际上是在使用Core Data,所以不适用,他们提到的所有帖子,cmets中的建议也不适用。

【问题讨论】:

是否有任何 Pod 使用 CoreData? 据我所知,没有。我试图在整个项目(包括 pod)中搜索 CodeData,没有导入 CoreData。 【参考方案1】:

解决了这个问题。我所做的是:

删除了两个过时的 pod(它们使用 Core Data) - 这继续进行,但我仍然遇到同样的错误。 删除了 Lottie 添加到资产中的文件 - 这推动了事情的发展,但并没有解决问题。 手动删除和读取所有资产 - 一项一项 - 这解决了问题。

【讨论】:

以上是关于由于 CoreData 无法创建构建:应用程序中没有核心数据时 API 滥用,并且应用程序为所有模拟器构建的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常“NSObjectInaccessibleException”而终止应用程序,原因:“CoreData 无法完成错误”

将 CoreData 添加到现有项目

核心数据:无法创建新对象

无法创建 NSManagedObject 子类

无法访问 CoreData

CoreData:错误:无法在创建时调用 NSManagedObject 类上的指定初始化程序