如何解决“SwiftUI 无法更新预览”问题?

Posted

技术标签:

【中文标题】如何解决“SwiftUI 无法更新预览”问题?【英文标题】:How to resolve "SwiftUI failed to update preview" issue? 【发布时间】:2021-05-22 13:28:49 【问题描述】:

我正在按照 Apple 的教程学习 SwiftUI:https://developer.apple.com/tutorials/swiftui/building-lists-and-navigation

在第 2 节第 4 步中,当我按照说明输入相同的代码时:

import SwiftUI


struct LandmarkRow: View 

    var landmark: Landmark


    var body: some View 

        Text("Hello, World!")

    




struct LandmarkRow_Previews: PreviewProvider 

    static var previews: some View 

        LandmarkRow(landmark: landmarks[0])
    


SwiftUI 预览不起作用(什么都不显示)并返回错误消息:

RemoteHumanReadableError: Failed to update preview.

The preview process appears to have crashed.

Error encountered when sending 'previewInstances' message to agent.

==================================

|  RemoteHumanReadableError: The operation couldn’t be completed. (BSServiceConnectionErrorDomain error 3.)
|  
|  BSServiceConnectionErrorDomain (3):
|  ==BSErrorCodeDescription: OperationFailed

我什至尝试复制粘贴 Apple 的示例代码,但预览也不起作用。 虽然早期教程会话中的其他 SwiftUI 视图工作正常,但我怀疑它可能与代码末尾的预览提供程序结构有关,我在网上搜索但没有帮助。

这是我的应用程序版本:

Xcode 版本:12.5 (12E262) MacOS 版本:11.3.1 Big Sur

在此问题解决之前,我无法继续学习。 感谢您提供任何意见,在此先感谢。

【问题讨论】:

复制并粘贴给您带来问题的文件的代码 欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。没有Minimal Reproducible Example,就无法帮助您解决问题。 奇怪的是,在我从头开始教程后,问题就消失了。 SwiftUI Preview 现在可以正常工作了。 最简单的方法是在模拟器中运行代码,因为在那里你会得到真正的错误和更有意义的崩溃报告。 【参考方案1】:

奇怪的是,在我从头开始学习教程后,问题就消失了。 SwiftUI Preview 现在可以正常工作了

【讨论】:

【参考方案2】:

也许在您的代码 sn-p 中您只是遗漏了一些内容,因为该代码不应该复制。您已指向一个名为 landmarks 的数组,但看起来您并未创建数组对象以供预览使用。这应该有效:

struct LandmarkRow_Previews: PreviewProvider 

    static var previews: some View 

        LandmarkRow(landmark: Landmark())
    


【讨论】:

是的,你是对的,我想我错过了一些代码并且 Xcode 停止工作,当我尝试从教程中“复制”代码时发生了几次。谢谢。

以上是关于如何解决“SwiftUI 无法更新预览”问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Mac无法读取外置硬盘问题?

MySql5.7无法正常启动的问题如何解决

“无法注册输入通道” - 这是由啥引起的以及如何解决这个问题?

如何解决错误消息:“无法映射路径'/'。”

如何解决这些问题? “无法反序列化对象。”

如何解决“该虚拟机正在使用中”无法打开问题