SwiftUI Preview Canvas 构建失败,但项目构建没有

Posted

技术标签:

【中文标题】SwiftUI Preview Canvas 构建失败,但项目构建没有【英文标题】:SwiftUI Preview Canvas Build Fails but Project Build does Not 【发布时间】:2020-05-01 12:29:16 【问题描述】:

我正在做一个项目,将 SwiftUI 添加到使用 Cocoapods 的旧版应用程序中。当我尝试运行预览画布时,构建失败并且画布无法运行。

原因是在项目中构建包含的 pod 之一时出现问题(我们将此 pod 称为“LibraryX”)。当 XCode 尝试构建 LibraryX 时,它会遇到分段错误。但是当我自己构建项目时,构建 LibraryX 并启动应用程序没有问题。

我尝试在 XCode 项目构建设置中查找 SwiftUI 预览版特定的构建设置,但没有找到任何东西。我已经仔细检查了构建路径设置(如this answer)并验证了我正在正确的设备上构建(如this answer)。总的来说,谷歌搜索其他面临类似问题的人到目前为止还没有出现像我这样的问题。

然后我想知道的是:XCode 是否使用不同的构建设置来构建项目以用于创建预览画布?如果是这样,有没有办法配置预览画布构建的工作方式?

因为 LibraryX 是专有的,而我尝试添加的 SwiftUI 视图只是 XCode 创建的默认“hello world”视图,因此我无法以该问题的代码示例的方式分享。

【问题讨论】:

在Run SwiftUI preview from SPM Package 中查看答案。原因是一样的。 我遇到了这样的问题,它必须处理 ios 13 不支持的库。我直接导入了代码并对库进行了更改,一切都开始工作了.如果发现这一点,唯一的方法是将项目设置为 iOS 13 目标,我添加了代码以排除不起作用的部分。并添加新版本的代码以支持 iOS 13。 @MwcsMac 事实上,我一直在自己的 pod 中编写 SwiftUI 代码并导入它。这让我可以构建 UI 和相当多的业务逻辑。但如果能够从旧版应用工作区本身开发和预览我的视图,那就太好了。 【参考方案1】:

SwiftUI 仍有一些 bug,还不完善。 画布是 SwiftUI 的一部分,并“共享”其中一些错误。 有时您会发现自己处于以下情况,(a.)某些东西在 Canvas 上不起作用或(b.)在模拟器上无法正常工作,但(c.)在真实设备上完美工作。 很可能一切都会随着时间的推移而变得更好,因为 SwiftUI 是相当新的(不到一年的时间)并且 Apple 正在推动它。

目前在类似情况下,我的“解决方案”是不依赖画布而只在模拟器上进行测试。

【讨论】:

一年多,同样的情况,WidgetKit项目预览工作,但不是一般项目:)

以上是关于SwiftUI Preview Canvas 构建失败,但项目构建没有的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Preview 不适用于 MacOS 构建,而它适用于 iOS 构建

SwiftUI Preview 因 Core Data 'NSInvalidArgumentException' 而崩溃

如何在没有测试目标的情况下让 SwiftUI Preview 只构建主要目标?

SwiftUI Preview 不适用于 FetchRequest 和 Init

在范围内找不到 SignInWithAppleButton (SwiftUI 2)

SwiftUI Preview 因链接器错误而失败