gpt4 book ai didi

swift - 如果预览内容文件夹中有 SwiftUI 预览的代码,为什么存档会失败?

转载 作者:行者123 更新时间:2023-12-04 11:04:58 27 4
gpt4 key购买 nike

在我的 SwiftUI 应用程序中,我将一些示例模型对象放在 Xcode 的“预览内容”文件夹中。我只在我的 SwiftUI 中访问它们 PreviewProvider s。我的理解是这个文件夹中的代码/ Assets 仅用于在Canvas中进行预览。我的预览工作正常。我正在使用 Xcode 11.6 (11E708)。
但是,当我去存档我的应​​用程序时,它失败了,因为它找不到这些示例模型对象。我的印象是PreviewProvider自 Xcode 11 起,代码未构建到最终二进制文件中。请参阅 this questionthis screenshot来自 Xcode 11 发行说明。
(奇怪的是,我能够使用 Release 配置进行编译。只是 Archive 失败了。)
作为一种解决方法,我可以把 #if DEBUG/#endif我的 wrapper PreviewProvider但上面的屏幕截图表明这不是必要的。
我是否误解了“预览内容”文件夹的工作原理?

最佳答案

我相信这是一个 Xcode 错误,但我已经想到了一个解决方法。
我把我所有的预览测试数据放在自己的 PreviewProvider 中以便我可以在其他预览中访问它。存档仍然成功,测试数据将在最终存档中被剥离。否 #if DEBUG需要。
示例(特定于我自己的用例):

struct PreviewData: PreviewProvider {
static var previews: some View {
Text("This is test data for use in other previews.")
}

// Use enums for namespacing if desired
enum Choices {
static let deals = Choice(id: UUID().uuidString, text: "I want the best deals.", iconName: "bestDealsIcon")
static let technology = Choice(id: UUID().uuidString, text: "I love technology!", iconName: "technologyIcon")
}
然后我可以访问 PreviewData.Choices.deals在其他 PreviewProvider s。

关于swift - 如果预览内容文件夹中有 SwiftUI 预览的代码,为什么存档会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63078880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com