【发布时间】:2020-01-02 14:35:13
【问题描述】:
最近我注意到我正在开发的应用程序中的预览已停止工作。我正在使用最新的 Xcode 和 Catalina (Beta 7)。 如果我向我的项目添加一个新视图 - TestView,它的预览会失败。这是没有修改的,即默认的“Hello World”视图。诊断表明“TestView”不是“MyProject”的成员类型。 有关如何解决此问题的任何想法?
如果我创建一个新项目,预览工作正常。
该项目在实际设备或模拟器上运行良好。
完整的诊断消息是: “TestView”不是“MyProject”的成员类型
failedToBuildDylib:/Users/nigelhamilton/Library/Developer/Xcode/DerivedData/MyProject-bgufjjqbmfuwcaahjswocfzmwsgx/Build/Intermediates.noindex/Previews/MyProject/Intermediates.noindex/MyProject.build/Debug-iphonesimulator/MyProject.build/Objects- normal/x86_64/TestView.2.preview-thunk.swift:23:32:错误:“TestView”不是“MyProject”的成员类型 typealias TestView = MyProject.TestView ~~~~~~~~~ ^ /Users/nigelhamilton/Library/Developer/Xcode/DerivedData/MyProject-bgufjjqbmfuwcaahjswocfzmwsgx/Build/Intermediates.noindex/Previews/MyProject/Intermediates.noindex/MyProject.build/Debug-iphonesimulator/MyProject.build/Objects-normal/x86_64/TestView .2.preview-thunk.swift:16:6:错误:找不到“body”的替换访问器 @_dynamicReplacement(for: body) private var __preview__body: some View { ^
我目前正在从我的项目(或至少是项目的副本)中删除代码,以查看它是否最终会再次开始显示预览。我对此进行了两次尝试,最终成功了,但是删除了大部分代码。所以我正在尝试缩小问题的可能范围。
【问题讨论】:
-
以下可能有效: - 退出 Xcode - 打开 Finder,转到文件夹
/Users/nigelhamilton/Library/Developer/Xcode并删除 DerivedData - 重新打开 Xcode。这不会导致任何数据丢失,但下一次构建可能需要更多时间,因为 Xcode 必须再次执行所有操作。 -
我之前确实尝试过处理 DerivedData,但不幸的是它没有帮助。
-
您能否提供您的
PreviewProvider的代码?所有迹象都表明(至少对我而言)好像问题就在那里。 -
PreviewProvider 是 Xcode 默认创建的:
struct TestView_Previews: PreviewProvider { static var previews: some View { TestView() } } -
实际上 no 这不是“默认” - 所有内容都应命名为
ContentView而不是TestView。这就是我问的原因。我猜你是否真的经历过(a)创建一个全新项目的痛苦,(b)导入你编码和自定义的所有内容而不将单个内容更改为ContentView,一切都会构建并运行。接下来,经历 (a) 保留您的ContentView的痛苦,但是 - 按视图查看 - 包括您的自定义命名的东西,同时 (b) 构建和运行所有三个输出 - 设备、模拟器、预览 - 你可能会发现你的问题.