首页 > 解决方案 > 如何为 SwiftUI 子视图提供预览数据

问题描述

大多数示例以及 Apple 模板都使用平面数据模型,其中列表填充了 Core Data 持久化的数据,尤其是与导航视图相关的数据。这是非常不言自明的,在 Persistence.swift 中定义的示例数据意味着它被排除在视图文件之外。

在任何子视图中如何为预览提供数据还不太清楚,在明显的频道中搜索时也很少有这样的例子。似乎建议将对象通过导航链接传递到子视图,然后可以在其中列出它们。这没有任何问题(除了一对多关系作为 NSSet 出现的事实,需要将其转换为要在子视图中列出的数组)。但预览是另一回事,可用的少数答案似乎暗示应该在预览中定义预览数据。但这看起来并不枯燥,并且会导致在具有许多视图的项目中出现大量重复。我宁愿保持视图不受此类数据的影响。

如何以 SwiftUI 惯用的方式实现这一点?

我在https://github.com/mbergek/geography上设置了一个示例项目,对默认的核心数据模板进行了最小的更改。我想在 Persistence.swift(或其他地方)中重用我的示例数据,而不必在预览(CountryView.swift)中重复定义。

标签: swiftswiftui

解决方案


推荐阅读