Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift包中使用CoreData和SwiftUI预览时出现问题_Swift_Xcode_Swiftui_Swift Package Manager - Fatal编程技术网

在Swift包中使用CoreData和SwiftUI预览时出现问题

在Swift包中使用CoreData和SwiftUI预览时出现问题,swift,xcode,swiftui,swift-package-manager,Swift,Xcode,Swiftui,Swift Package Manager,tldr:swift包内的核心数据,工作;SwiftUI在swift软件包内工作;两者在swift软件包的预览中一起使用,不起作用 我有以下资料: swift项目(仅限iOS,以保持简单) 通过Xcode创建的包(新建->Swift包) swift包有一个核心数据模型和PersistenceController swift包有一个SwiftUI视图,几乎是默认样板文件ContentView的逐行副本(刚刚重命名为OriginalContentView以避免任何冲突的可能性) 以下工作如预期:

tldr:swift包内的核心数据,工作;SwiftUI在swift软件包内工作;两者在swift软件包的预览中一起使用,不起作用

我有以下资料:

  • swift项目(仅限iOS,以保持简单)
  • 通过Xcode创建的包(新建->Swift包)
  • swift包有一个核心数据模型和PersistenceController
  • swift包有一个SwiftUI视图,几乎是默认样板文件ContentView的逐行副本(刚刚重命名为OriginalContentView以避免任何冲突的可能性)
以下工作如预期:

  • 在swift包中的测试包中,测试成功运行,这些测试包括使用内存存储启动PersistenceController、播种一些数据、测试一些创建、读取、更新和删除,以及使用谓词和排序描述符的一些查询。所有这些测试都通过并按预期工作
  • 在主iOS应用程序中,如果我导入包并将OriginalContentView放在主ContentView SwiftUI视图中,预览将按预期工作(当我按照样板文件将包的PersistenceController内存中存储的上下文传递到环境对象时)
  • 同样在主iOS应用程序中,我可以构建一个应用程序,并在模拟器中使用持久存储(即不在内存中)运行它。应用程序正确加载、正常工作,并按预期在应用程序构建和加载之间保存数据
我把上面的所有内容都放在那里,以表明无论出于何种目的,包中的核心数据模型和SwiftUI视图都可以工作——在包的测试、主iOS应用程序的预览和构建中

另一个有效的方法是,如果我在我的包中创建了一个没有核心数据依赖关系的SwiftUI视图类(即,只有一个简单的hello world视图,或者一个带有一些更复杂的动画的视图),将构建目标切换到我的包,并打开画布,我可以像平常一样预览视图

但是,如果我试图在包内的预览中使用内存中的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)