SwiftDataPreviewer

Swift Versions

Platforms

Licence

SwiftDataPreviewer 是一个轻量级的 Swift 包,旨在简化使用 SwiftData 的 SwiftUI 预览。它为 DEBUG 构建提供了一个内存模型容器,允许您使用示例数据预览由 SwiftData 驱动的视图。

特性

安装

使用 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 驱动的视图。

用法

  1. 定义 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
      }
    }
  2. 创建预览容器

    定义一个 PreviewContainer,其中包含您想要包含的模型类型

    #if DEBUG
    import SwiftDataPreviewer
    
    let previewContainer = PreviewContainer([User.self])
    #endif
  3. 在您的预览中使用 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

工作原理

  1. PreviewContainer 创建一个内存中的 ModelContainer。

  2. SwiftDataPreviewer 将容器注入到您的 SwiftUI 视图中。

  3. 示例数据会自动插入,以便您的预览被填充。

贡献

欢迎贡献!如果您发现错误或有改进建议,请随时提交 pull request。

许可

SwiftDataPreviewer 在 MIT 许可下可用。有关更多详细信息,请参阅 LICENCE 文件。