如何让预览在 SwiftUI 项目中再次运行

问题描述 投票:0回答:5

最近我注意到我正在开发的应用程序中的预览已停止工作。我正在使用最新的 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: 一些视图 { ^

我目前正在从我的项目(或至少是项目的副本)中删除代码,以查看它最终是否开始再次显示预览。我已经尝试过两次,最终成功了,但删除了大部分代码。所以我正在尝试缩小问题可能出在哪里。

preview swiftui
5个回答
19
投票

我想我已经解决了这个问题。我犯了一个听起来可能很愚蠢的错误。该项目使用 CoreData,我为其中一个实体指定了与该项目相同的名称。 虽然这听起来可能很疯狂,但该项目可以毫无问题地构建和运行(模拟器或设备)。只是预览让人感到困惑。 我已经重命名了Entity,至少可以预览一些View,包括上面提到的TestView。 仍然有一些视图无法正确预览,但我认为这是由于另一个问题造成的。


8
投票

对我来说,我很幸运使用这个命令解决了这个问题:

xcrun simctl --set previews delete all

似乎与预览模拟器上的“rm”执行相同的操作,但获取所有设备,并且似乎确保之后立即设置模拟器服务的状态。


2
投票

如果这对任何人都有用,我通过将 CoreData 模型属性之一从“created”(双)重命名为“createdTimestamp”(双)来解决“预览不起作用”的问题。


0
投票

检查您的模拟器,我遇到了一个问题,预览为空白,并长时间显示此消息

preparing iphone simulator for previews
然后我手动运行模拟器,它不起作用我收到错误消息(无法启动模拟器)。修复模拟器问题后,预览可以正常工作。

这个解决方案帮助我解决了模拟器问题。


0
投票

这就是我的解决方案,感谢评论中的@cbjeukendrup:

  1. 退出 Xcode
  2. 转到 /Users/{user}/Library/Developer/Xcode
  3. 删除派生数据
  4. 重新打开 Xcode

预览特别讨厌重命名文件。

© www.soinside.com 2019 - 2024. All rights reserved.