SwiftDataPreviewer
是一个轻量级的 Swift 包,旨在简化使用 SwiftData 的 SwiftUI 预览。它为 DEBUG
构建提供了一个内存模型容器,允许您使用示例数据预览由 SwiftData 驱动的视图。
ModelContainer
注入到您的 SwiftUI 预览中。SwiftDataPreviewer
包裹您的视图。使用 Swift Package Manager 将 SwiftDataPreviewer
添加到您的 Swift 项目中。
dependencies: [
.package(url: "https://github.com/markbattistella/SwiftDataPreviewer", from: "1.0.0")
]
或者,您可以使用 Xcode 添加 SwiftDataPreviewer
,方法是导航到 File > Add Packages
并输入包仓库 URL。
注意
SwiftDataPreviewer
专为 SwiftUI 预览设计,不适用于生产环境。它提供了一个内存中的 ModelContainer
,该容器已自动配置用于 SwiftData 驱动的视图。
定义 SwiftData 模型
确保您的 SwiftData 模型符合 PersistentModel
import SwiftData
@Model
class User {
@Attribute(.unique) var id: UUID
var name: String
init(id: UUID = UUID(), name: String) {
self.id = id
self.name = name
}
}
创建预览容器
定义一个 PreviewContainer,其中包含您想要包含的模型类型
#if DEBUG
import SwiftDataPreviewer
let previewContainer = PreviewContainer([User.self])
#endif
在您的预览中使用 SwiftDataPreviewer
将您的 SwiftUI 视图包裹在 SwiftDataPreviewer
中并传递示例数据
#if DEBUG
import SwiftUI
import SwiftData
struct UserListView: View {
@Query private var users: [User]
var body: some View {
List(users) { user in
Text(user.name)
}
}
}
struct UserListView_Previews: PreviewProvider {
static var previews: some View {
SwiftDataPreviewer(preview: previewContainer, items: [
User(name: "Alice"),
User(name: "Bob"),
User(name: "Charlie")
]) {
UserListView()
}
}
}
#endif
PreviewContainer 创建一个内存中的 ModelContainer。
SwiftDataPreviewer 将容器注入到您的 SwiftUI 视图中。
示例数据会自动插入,以便您的预览被填充。
欢迎贡献!如果您发现错误或有改进建议,请随时提交 pull request。
SwiftDataPreviewer
在 MIT 许可下可用。有关更多详细信息,请参阅 LICENCE 文件。