mcpField
S
swift-data

swift-data

github.com/pproenca数据与数据库220265 次安装11 周前更新
代码仓库

关于 swift-data

swift-data 是面向采用 clinic 模块化 MVVM-C 架构的 SwiftData 数据层指南,涵盖建模、持久化、同步和错误处理,并将 SwiftData 实现限定在 Data 层。

主要功能

  1. 01分离 Domain 与 Data 层
  2. 02映射 SwiftData 实体与领域模型
  3. 03提供基于仓储的持久化指南
  4. 04离线优先同步与冲突处理
  5. 05模式迁移与预览实践

适用场景

  1. 01设计 SwiftData 模型和仓储
  2. 02构建排队写入与后台同步
  3. 03处理存储错误和模式迁移
  4. 04创建隔离的内存预览

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill swift-data

安装后在 Claude Code 中输入/swift-data确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

metadata.json
assets/templates/
_template.md
references/
_sections.md
crud-cancel-delete.md
crud-delete-indexset.md
crud-dismiss-save.md
crud-edit-button.md
crud-insert-context.md
crud-save-error-handling.md
crud-sheet-creation.md
crud-undo-cancel.md
model-class-for-persistence.md
model-computed-properties.md
model-custom-types.md
model-defaults.md
model-domain-mapping.md
model-external-storage.md
model-identifiable.md
model-initializer.md
model-transient.md
persist-app-group.md
persist-autosave.md
persist-container-error-recovery.md
persist-container-setup.md
persist-context-environment.md
persist-enumerate-batch.md
persist-identifier-transfer.md
persist-in-memory-config.md
persist-model-actor.md
persist-model-macro.md

详细介绍

SwiftData 最佳实践 — 模块化 MVVM-C 数据层

SwiftData 数据建模、持久化、同步架构和错误处理的全面指南,与诊所模块化 MVVM-C 技术栈保持一致。

架构对齐

此技能遵循 swift-ui-architect 规定的相同模块化架构:

┌───────────────────────────────────────────────────────────────┐
│ Feature modules: View + ViewModel, no SwiftData imports       │
├───────────────────────────────────────────────────────────────┤
│ Domain: models + repository/coordinator/error protocols        │
├───────────────────────────────────────────────────────────────┤
│ Data: @Model entities, SwiftData stores, repository impls,     │
│ remote clients, retry executor, sync queue, conflict handling  │
└───────────────────────────────────────────────────────────────┘

核心原则: SwiftData 类型(@Model、ModelContext、@Query、FetchDescriptor)仅存在于 Data 层的实现代码中。功能模块的视图/视图模型使用 Domain 类型和协议依赖。

诊所架构约定(iOS 26 / Swift 6.2)

此技能中的所有指导均以诊所模块化 MVVM-C 架构为前提:

  • 功能模块仅导入 Domain + DesignSystem(绝不导入 Data,也不导入同级功能模块)
  • App 目标是汇合点,拥有 DependencyContainer、具体协调器和 Route Shell 接线
  • Domain 保持纯 Swift,定义模型以及仓库、*Coordinating、ErrorRouting 和 AppError 约定
  • Data 负责 SwiftData/网络/同步/重试/后台 I/O,并实现 Domain 协议
  • 读写流程默认采用过期后重新验证读取和乐观排队写入
  • 视图模型直接调用仓库协议(默认不设用例/交互器层)

适用场景

在以下情况下参考这些指南:

  • 定义 @Model 实体类并将其映射到领域结构体
  • 在 Data 层设置 ModelContainer 和 ModelContext
  • 实现由 SwiftData 支持的仓库协议
  • 编写过期后重新验证的仓库读取(AsyncStream)
  • 实现乐观写入和排队同步操作
  • 配置实体关系(一对多、反向关系)
  • 从 API 获取数据,并通过同步协调器持久化到 SwiftData
  • 处理保存失败、存储损坏和迁移错误
  • 将 AppError 特征路由到集中式错误 UI 基础设施
  • 使用示例数据构建预览基础设施
  • 规划应用更新的架构迁移

工作流

设计或重构由 SwiftData 支持的功能时,请使用此工作流:

  1. Domain 设计:定义带有验证/计算规则的领域结构体(Trip、Friend)(参见 model-domain-mapping、state-business-logic-placement)
  2. 实体设计:定义带有映射方法的 @Model 实体类(参见 model-*、model-domain-mapping)
  3. 仓库协议:在 Domain 层定义,在 Data 层使用 SwiftData 实现(参见 persist-repository-wrapper)
  4. 容器接线:在应用边界配置一次 ModelContainer,并提供错误恢复(参见 persist-container-setup、persist-container-error-recovery)
  5. 依赖注入:通过 @Environment 注入仓库协议(参见 state-dependency-injection)
  6. 视图模型:创建直接委托给仓库协议的 @Observable 视图模型(参见 state-query-vs-viewmodel)
  7. CRUD 流程:所有插入/删除/更新操作都通过视图模型 -> 仓库路由(参见 crud-*)
  8. 同步架构:将写入操作排队,通过带重试策略的同步协调器执行(参见 sync-*)
  9. 关系:将多对多关系建模为数组;定义删除规则(参见 rel-*)
  10. 预览:创建内存容器和示例数据,以便快速迭代(参见 preview-*)
  11. 架构演进:使用版本化架构规划迁移(参见 schema-*)

故障排除

  • 数据未持久化 -> persist-model-macro、persist-container-setup、persist-autosave、schema-configuration
  • 后台导入后列表未更新 -> query-background-refresh、persist-model-actor
  • 列表未更新(同一上下文)-> query-property-wrapper、state-wrapper-views
  • API 同步产生重复项 -> schema-unique-attributes、sync-conflict-resolution
  • 更改模型后应用在启动时崩溃 -> schema-migration-recovery、persist-container-error-recovery
  • 保存失败且数据悄然丢失 -> crud-save-error-handling
  • 网络数据过时 -> sync-offline-first、sync-fetch-persist
  • 小组件/扩展无法查看数据 -> persist-app-group、schema-configuration
  • 为数据视图选择架构模式 -> state-query-vs-viewmodel、persist-repository-wrapper

按优先级划分的规则类别

优先级类别影响前缀
1数据建模CRITICALmodel-
2持久化设置CRITICALpersist-
3查询与筛选HIGHquery-
4CRUD 操作HIGHcrud-
5同步与网络HIGHsync-
6关系MEDIUM-HIGHrel-
7SwiftUI 状态流MEDIUM-HIGHstate-
8架构与迁移MEDIUM-HIGHschema-
9示例数据与预览MEDIUMpreview-

快速参考

1. 数据建模(CRITICAL)
2. 持久化设置(CRITICAL)
3. 查询与筛选(高)
4. CRUD 操作(高)
5. 同步与网络(高)
6. 关系(中高)
7. SwiftUI 状态流(中高)
8. 架构与迁移(中高)
9. 示例数据与预览(中)

使用方法

阅读单个参考文件,了解详细说明和代码示例:

参考文件

文件描述
references/_sections.md类别定义和排序
assets/templates/_template.md新规则模板
metadata.json版本和参考信息

评论

支持 Markdown