首页 > 解决方案 > SwiftUI:将应用程序初始化代码放在哪里,这样它就不会在预览中运行?

问题描述

我正在尝试查找不应在预览模式下运行的应用程序初始化代码的放置位置。我已经看到几个答案表明以这种方式拆分应用程序行为(启动与预览)是不正确的,但我不同意:许多应用程序需要进行额外的设置(例如连接到数据库、启动后台任务、调用 API 等) '不适合预览(静态测试数据最有意义)。

在预览模式下,Xcode 实际运行应用程序并调用 AppDelegate.applicationDidFinishLaunching,因此那里的任何启动后初始化代码都会被触发。

运行应用程序设置代码以使其不在预览中运行的推荐方法是什么?

标签: swiftui

解决方案


Preview Live,我假设你的意思是,创建完整的窗口场景上下文并在那里注入要预览的视图,因此调用所有应用程序和场景委托方法,包括实例化 root ContentView但不显示根视图,即。它body没有被调用。

因此,您可以通过放置代码、启动所有重/网络/等来实现您的目标。根视图.onAppear回调中的操作。实际上,这对您的用户也有好处,因为这种方法可以快速启动应用程序并呈现初始 UI。


推荐阅读