在我的SwiftUI应用程序中,我将一些示例模型对象放在Xcode的“Preview Content”文件夹中。我只在我的SwiftUI PreviewProvider
中访问它们。我的理解是,此文件夹中的代码/资产仅用于在画布中预览。我的预览工作正常。我使用的是Xcode 11.6(11 E708)。
但是,当我转到Archive my app时,它失败了,因为它找不到这些示例模型对象。我的印象是,X1 m1n1x代码没有构建到Xcode 11的最终二进制文件中。请参阅this question,沿着Xcode 11发行说明中的内容:
已解决问题
围绕PreviewProvider类型的#if
/#endif
编译器条件已从SwiftUI模板中删除。存档时,PreviewProviders未从构建的产品中正确删除。(51539802)
(奇怪的是,我能够使用Release配置进行编译。只是Archive失败了。)
作为一种变通方法,我可以在PreviewProvider
周围放置#if DEBUG
/#endif
Package 器,但发行说明中的上述引用表明不需要这样做。
我是否误解了“预览内容”文件夹的工作原理?
2条答案
按热度按时间pgx2nnw81#
编辑:没关系,这种方法“工作”,但预览代码仍然在最终存档中,所以它并没有真正帮助任何事情。
我把我所有的预览测试数据放在它自己的
PreviewProvider
中,这样我就可以在其他预览中访问它。存档仍然成功,测试数据将在最终存档中剥离。不需要#if DEBUG
。示例(针对我自己的用例):
然后我可以访问其他
PreviewProvider
中的PreviewData.Choices.deals
。qyswt5oh2#
我遇到了一个非常类似的问题,只是我正在为现有的应用程序构建一个应用程序剪辑。我无法使用Xcode 12.5.1或13.0版本的发布方案或存档进行编译。
解决方案是将
Preview Content
目录包含在父应用程序目标的开发资产下,而不是应用程序剪辑目标本身。因此,我让它在所有场景中工作,包括SwiftUI预览,发布版本和存档父应用以供分发。