SwiftUI / Xcode错误 - 更新时间超过5秒

51

当我尝试在画布中预览我的一个视图时,我一直收到以下错误:

PreviewUpdateTimedOutError:更新花费了超过5秒钟

我所有其他的视图都可以正常加载。

这是为什么,我该如何解决?

我正在使用 Xcode 11.4(公共发行版)中的 SwiftUI。


2
在开始之前先构建整个项目;将您的视图分解成较小的部分。 - Asperi
2
我一直在使用新的 Xcode 11.4,之前都很好。 但实际上,这个版本在我正在开发的 SwiftUI 项目中引入了很多问题。 - zh.
2
@zh 这非常令人沮丧 - MattBlack
1
正如@Asperi所提到的,尝试同时减少预览次数,将代码分解成较小的部分。但仍然不可预测-相同的代码现在可能呈现良好,一分钟后开始出现“5秒”问题。实际上,我发现这个问题是在寻找解决方案时遇到的。为了延长执行和渲染时间超过5秒。但没有运气。 - zh.
1
重启Xcode大多数情况下都会有帮助。顺便说一句。 - zh.
显示剩余2条评论
29个回答

36

我停止使用模拟器,选择“任何iOS设备”解决了问题。


1
这个解决方案非常有帮助。就我所知,似乎没有绝对可靠的方法来避免这种情况。 - Christopher Shireman
这是唯一解决方案适用于我!即使联系了苹果也没有解决问题。但选择任何iOS设备都可以解决问题。 - Hussain1982
此解决方案立即生效,谢谢!(Xcode 13.2.1) - Michael Pohl
此外,模拟器未使用的任何其他设备也可以使用。 - Brainware
但是,抱歉,谁能告诉我为什么会发生这种情况? - Neal.Marlin

16

在我的情况下,问题出现在构建设置中的这一行:

在此输入图片描述

我不小心更改了项目中的签名设置。具体来说,“签名标识”被设置为“本地运行签名”。由于某些原因,SwiftUI 预览就不能正常工作。

只需从构建设置中删除此行(或将其设置为默认值),即可解决问题。


Xcode 12.4(macOS 10.15.7)这个修复了。 - soundflix

11

有时候,显示的错误并不是真正的错误。

对我来说,这是因为我漏掉了.environmentObject(...)


10
截至Xcode 12.5.1,消息PreviewUpdateTimedOutError:Updating took more than 5 seconds通常意味着您的应用程序崩溃,因此更新预览失败。不幸的是,这个无用的信息掩盖了崩溃的真正原因(为什么苹果会这样做超出了我的理解)。要找到真正的原因,您需要:
  • 单击无用错误消息旁边预览顶部的Diagnostics
  • 在下一个对话框中,单击 Generate Report>Reveal in Finder
这可能需要一点时间。然后,Finder将打开一个突出显示的文件夹。打开该文件夹。里面有很多日志文件和文件夹。
如果您的应用程序确实崩溃,则会看到一个名为CrashLogs的文件夹,其中包含您的应用程序的崩溃日志,包括错误消息和堆栈跟踪。这应该有助于您解决导致预览中断的实际错误。
请注意,对于我来说,即使我的应用程序确实崩溃,有时也没有在报告中包括CrashLogs。重试预览并生成另一个报告可以解决此问题。整个错误报告过程似乎对于预览而言相当不稳定,很遗憾。

8
尝试使用Clean(Shift + ⌘ + K)和Build(⌘ + B)重新构建SwiftUI项目,这在Xcode 11.6中可行。尝试构建一个基本的Hello World应用程序。

5
在我的情况下,问题是 PreviewProvider 被标记为 private。只需将其改为 internal 或移除 private 访问修饰符即可。
private /* <- remove */ struct YourView_Previews: PreviewProvider {
    static var previews: some View {
        // Your previews
    }
}

5

我使用的是13.2.1版本(13C100)。 我已经使用清理(Shift + ⌘ + K)和构建(⌘ + B)项目。 但问题仍然存在。

然后,只需重新启动Xcode。问题就解决了。


1
我在同一版本的Xcode上也有过完全相同的经历。它之前一直正常工作,突然出现了这个问题。简单地重启Xcode就解决了它。 - Ruiz
1
也适用于我! - Lucas Goldner

2
如果您有“onAppear”子句,请尝试将其注释以进行预览。

自从我更新到Big Sur以来,我一直遇到这个问题。我正在使用Xcode v12.2。我注释掉了.onAppear子句,然后xcode给了我这个错误,而不是5秒超时:“检查您的构建设置,确保预览提供程序已编译到您的产品中。”这是什么意思? - jammyman34

2

这些建议都没有帮助到我,但我发现你不能完全依赖于成功的构建来解决所有问题。在我的情况下,我将'.modifier(modifier:)'错误地输入为'modifier(modifier:)'。我的代码构建成功了,但在添加修饰符之前,我的预览无法正常工作。


2

对我来说,这个问题与在预览时找不到元素的强制解包相关。

注意:始终检查诊断报告。问题将在终止原因后的顶部部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接