首页 > 解决方案 > 在 Swift 包中使用 CoreData 和 SwiftUI 预览时出现问题

问题描述

tldr:快速包内的Cor​​eData,有效;swift 包中的 SwiftUI 可以正常工作;两者一起在 swift 包中的预览中,不起作用。

我有以下内容:

以下按预期工作:

我将上述所有内容放在那里是为了表明,对于所有意图和目的,包中的 Core Data 模型和 SwiftUI 视图都可以工作 - 在该包的测试中、在主 iOS 应用程序的预览中以及在构建中。

另一件有效的事情是,如果我在我的包中创建一个没有核心数据依赖项的 SwiftUI 视图类(即,只是一个普通的 hello 世界视图,或者一个带有一些动画的更复杂的东西),则将构建目标切换到我的打包,然后打开画布,我可以正常预览视图。

但是,如果我尝试在包中的预览中使用内存中的 PersistenceController,预览会失败,提示“无法在此文件中预览 - 由于未捕获的异常而崩溃”,然后单击“诊断”,我收到以下错误:

A fetch request must have an entity..

----------------------------------------

UncaughtExceptionError: Crashed due to an uncaught exception

Xcode Previews crashed due to an uncaught exception `NSInvalidArgumentException`. Reason: executeFetchRequest:error: A fetch request must have an entity..

==================================

|  HumanReadableNSError: Rendering service was interrupted
|  
|  com.apple.dt.xcodepreviews.service (12):

从一些谷歌搜索来看,这个错误似乎出现在几种不同的情况下,但我已经消除了每一个(我不是懒惰加载我的托管对象上下文,我的类名和实体名是相同的 - 这两个是不断出现的向上)

同样,它在嵌入到主要 iOS 构建目标中的视图中时工作(在模拟器中预览和运行),这让我认为在包中和在实际应用程序中运行画布预览之间存在某种环境差异与CoreData混淆的目标......?

(我使用的是 Xcode 12.4)

标签: swiftxcodeswiftuiswift-package-manager

解决方案


推荐阅读