如何解决“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 无法更新预览”问题?的主要内容,如果未能解决你的问题,请参考以下文章