如何让预览在 SwiftUI 项目中再次工作
How to get Previews working again in a SwiftUI project
最近我注意到预览在我正在开发的应用程序中停止工作。我使用的是最新的 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' 的成员类型
类型别名 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 {
^
我目前正在从我的项目(或至少是项目的副本)中删除代码,以查看它是否最终会再次开始显示预览。我已经进行了两次尝试,最终成功了,但是删除了大部分代码。所以我试图缩小问题的范围。
我想我已经解决了这个问题。我犯了一个听起来可能很愚蠢的错误。该项目使用 CoreData,我给其中一个实体取了与该项目相同的名称。
虽然这听起来很疯狂,但该项目可以毫无问题地构建 运行(模拟器或设备)。只是预览变得混乱。
我已经重命名了Entity,至少可以预览一些View,包括上面提到的TestView。
还有几个视图无法正确预览,但我认为这是由于另一个问题。
如果这对任何人都有用,我通过将我的一个 CoreData 模型属性从 "created" (Double) 重命名为 "createdTimestamp" (Double) 来解决 "previews not working" 的问题。
最近我注意到预览在我正在开发的应用程序中停止工作。我使用的是最新的 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' 的成员类型 类型别名 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 { ^
我目前正在从我的项目(或至少是项目的副本)中删除代码,以查看它是否最终会再次开始显示预览。我已经进行了两次尝试,最终成功了,但是删除了大部分代码。所以我试图缩小问题的范围。
我想我已经解决了这个问题。我犯了一个听起来可能很愚蠢的错误。该项目使用 CoreData,我给其中一个实体取了与该项目相同的名称。 虽然这听起来很疯狂,但该项目可以毫无问题地构建 运行(模拟器或设备)。只是预览变得混乱。 我已经重命名了Entity,至少可以预览一些View,包括上面提到的TestView。 还有几个视图无法正确预览,但我认为这是由于另一个问题。
如果这对任何人都有用,我通过将我的一个 CoreData 模型属性从 "created" (Double) 重命名为 "createdTimestamp" (Double) 来解决 "previews not working" 的问题。