用途:为 iOS 16+/macOS 13+ 的 Swift 5.9+ 项目生成生产级 Core Spotlight 索引代码,使应用内的文章、商品、联系人、任务等内容能被系统 Spotlight 搜索并支持 Siri 建议与深链回跳。触发场景包括用户提到添加 Spotlight 搜索、Core Spotlight、CSSearchableItem、让内容可被系统搜索,或 NSUserActivity 搜索与 Handoff。
主要能力:生成 SpotlightIndexable 协议、基于 Actor 的 SpotlightIndexManager(含批量索引)、SpotlightAttributeBuilder 流畅属性构建器、处理 Spotlight 点击的 SpotlightSearchHandler,以及可选的 SpotlightSyncModifier(视图出现索引、消失取消索引)。生成前会检测部署目标、Swift 版本、@Observable、已有 Spotlight 代码、深链导航与 App Groups;并通过提问确认索引内容类型、是否含缩略图、批量/增量策略、是否启用 Siri 建议。
使用方式:模型遵守 SpotlightIndexable(提供 spotlightID、标题、描述、关键词等),创建时调用 index(items:),删除时调用 remove(identifiers:),首次启动或迁移后用 reindexAll(items:domain:) 重建;在 SwiftUI 中用 .onContinueUserActivity(CSSearchableItemActionType) 处理点击,或用 .spotlightIndexed(article) 自动索引。
限制与注意:CSSearchableIndex 无硬性文档上限,但建议索引控制在约 1 万条以内,可用 expirationDate 过期;缩略图建议不超过 300x300 且 JPEG 压缩;CSSearchableIndex.default() 非 Actor 隔离,需在 Actor 内调用避免竞态;冷启动需确保导航状态就绪;数据模型变更后应 removeAll(domain:) 再重建,并用 UserDefaults 记录 schema 版本;始终设置 reverse-DNS 风格 domainIdentifier 以便按域批量删除。索引内容类型与缩略图等具体配置需按用户选择确定。