我正在开发一个包,其中需要包含SwiftUI视图。
每个SwiftUI视图都应该有一个预览。
但是,当我试图运行任何视图的预览时,都会出现以下错误:

我找到了一种方法,如果我将包方案更改为主要目标方案,它就会工作。但是,使用这种方式,我必须始终在方案之间切换,每次我想运行包预览时,都需要构建主要目标。
可以在不构建主要目标的情况下直接从SPM包运行SwiftUI预览吗?
发布于 2020-03-23 12:46:05
Xcode 12
使用Xcode 12,SwiftUI预览就可以在独立的包中“按-应该”工作。

Xcode 11+
可以在不构建主要目标的情况下直接从SPM包运行SwiftUI预览吗?
不,至少到现在为止(Xcode 11.4beta3)。预览是模拟器的一个变体,它需要UI可执行文件来设置视图预览的全功能运行时上下文。
解决方案(来自实践):设置并行包含包中所有文件的SwiftUI可执行目标(或包本身,取决于)并执行所有SwiftUI开发它,但包本身在持续集成过程中构建(包括单元测试)。
发布于 2021-03-24 10:45:29
您需要的是在您的迅捷包声明中添加一个平台目标,如iOS,参见下面的示例(使用iOS(.v13)):
let package = Package(
name: "NAME",
platforms: [.iOS(.v13)],
products: [
// Products
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets
// Test Targets
]
)现在,确保在预览中使用相同的目标。当然,你可以添加更多。

发布于 2020-06-26 08:06:33
在Xcode 12中,这已经改变了。预览是在Swift包中启用的。实际上,添加了许多更改和新特性,以提高用户和开发人员对SwiftUI库扩展的体验。您可以观看这 WWDC20会话以了解更多信息。
要使它在Xcode 12的第一个测试版中工作,您必须创建一个库Swift包。确保您的程序可以构建-并且SwiftUI是导入的。此外,请记住添加包清单中支持的平台--这些平台由SwiftUI和您的包代码支持。在方案选择器中,选择要预览的库和库支持的设备。在启用画布之后,预览应该是可见的。目前有一些粗糙的角落,但我希望错误和可用性将改善以后的版本。
https://stackoverflow.com/questions/59732075
复制相似问题