用途:为 SwiftUI 应用提供在 macOS 与 iOS 之间共享代码的实践模式,并覆盖 iOS 专属扩展与跨平台数据同步。
主要能力:给出推荐项目结构(约 70% 共享代码、各 15% 平台专属);通过协议抽象平台服务(如剪贴板),用 #if os(macOS)/#if os(iOS) 做条件编译;用 @Environment(.horizontalSizeClass) 做平台内自适应布局;共享组件配合平台样式。iOS 侧涵盖自定义键盘扩展、交互式小组件(主屏与锁屏)、分享扩展、控制中心小组件(iOS 18+)与 URL Scheme 深链。数据部分涵盖 App Groups 共享容器、SwiftData 的 CloudKit 同步、同步状态监控、JSON 导入导出、Schema 版本化与迁移、WidgetCenter 刷新。
关键约束:共享代码不得导入 AppKit 或 UIKit,不得直接用 NSColor/UIColor、NSFont/UIFont,应使用 SwiftUI 的 Color 与 .font();平台服务须置于协议之后。
使用方式:按目录结构组织 Shared/macOS/iOS/Widgets 目标;扩展与小组件通过 App Groups 标识(如 group.com.yourapp.shared)共享数据;SwiftData 用 ModelConfiguration 指定共享存储 URL 或开启 cloudKitDatabase: .automatic。
适用场景:需要在 Mac 与 iPhone/iPad 间复用模型、视图模型与服务的 SwiftUI 应用,尤其是带键盘、小组件、分享扩展或 iCloud 同步的产品。
限制:资料未提供具体版本要求、性能数据、收费信息或完整安装步骤;示例代码为模式参考,实际需按项目调整。迁移检查清单提醒注意文档目录差异、iOS 键盘处理、右键菜单、窗口管理与状态栏差异。