cloudkit-code-review

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

CloudKit Code Review

CloudKit 代码审查

Quick Reference

快速参考

Issue TypeReference
CKContainer, databases, zones, entitlementsreferences/container-setup.md
CKRecord, references, assets, batch operationsreferences/records.md
CKSubscription, push notifications, silent syncreferences/subscriptions.md
CKShare, participants, permissions, acceptancereferences/sharing.md
问题类型参考文档
CKContainer、数据库、分区、权限配置references/container-setup.md
CKRecord、引用、资源、批量操作references/records.md
CKSubscription、推送通知、静默同步references/subscriptions.md
CKShare、参与者、权限、接受流程references/sharing.md

Review Checklist

审查检查清单

  • Account status checked before private/shared database operations
  • Custom zones used (not default zone) for production data
  • All CloudKit errors handled with
    retryAfterSeconds
    respected
  • serverRecordChanged
    conflicts handled with proper merge logic
  • CKErrorPartialFailure
    parsed for individual record errors
  • Batch operations used (
    CKModifyRecordsOperation
    ) not individual saves
  • Large binary data stored as
    CKAsset
    (records have 1MB limit)
  • Record keys type-safe (enums) not string literals
  • UI updates dispatched to main thread from callbacks
  • CKAccountChangedNotification
    observed for account switches
  • Subscriptions have unique IDs to prevent duplicates
  • CKShare uses custom zone (sharing requires custom zones)
  • 执行私有/共享数据库操作前检查账户状态
  • 生产数据使用自定义分区(而非默认分区)
  • 所有CloudKit错误均已处理,且遵循
    retryAfterSeconds
    机制
  • 使用正确的合并逻辑处理
    serverRecordChanged
    冲突
  • 解析
    CKErrorPartialFailure
    以处理单个记录错误
  • 使用批量操作(
    CKModifyRecordsOperation
    )而非单独保存
  • 大型二进制数据存储为
    CKAsset
    (记录有1MB大小限制)
  • 记录键使用类型安全的枚举而非字符串字面量
  • 回调中的UI更新分发至主线程
  • 监听
    CKAccountChangedNotification
    以处理账户切换
  • 订阅拥有唯一ID以避免重复
  • CKShare使用自定义分区(共享功能要求使用自定义分区)

When to Load References

何时查阅参考文档

  • Reviewing container/database setup or zones -> container-setup.md
  • Reviewing record CRUD or relationships -> records.md
  • Reviewing push notifications or sync triggers -> subscriptions.md
  • Reviewing sharing or collaboration features -> sharing.md
  • 审查容器/数据库配置或分区时 -> container-setup.md
  • 审查记录CRUD或关系时 -> records.md
  • 审查推送通知或同步触发器时 -> subscriptions.md
  • 审查共享或协作功能时 -> sharing.md

Output Format

输出格式

Report issues using:
[FILE:LINE] ISSUE_TITLE
Examples:
  • [AppDelegate.swift:24] CKContainer not in custom zone
  • [SyncManager.swift:156] Unhandled CKErrorPartialFailure
  • [DataStore.swift:89] Missing retryAfterSeconds backoff
使用以下格式报告问题:
[文件:行号] 问题标题
示例:
  • [AppDelegate.swift:24] CKContainer 未使用自定义分区
  • [SyncManager.swift:156] 未处理CKErrorPartialFailure
  • [DataStore.swift:89] 缺失retryAfterSeconds退避机制

Review Questions

审查问题

  1. What happens when the user is signed out of iCloud?
  2. Does error handling respect rate limiting (
    retryAfterSeconds
    )?
  3. Are conflicts resolved or does data get overwritten silently?
  4. Is the schema deployed to production before App Store release?
  5. Are shared records in custom zones (required for CKShare)?
  1. 用户退出iCloud登录时会发生什么?
  2. 错误处理是否遵循速率限制(
    retryAfterSeconds
    )?
  3. 冲突是否已解决,还是数据会被静默覆盖?
  4. App Store发布前是否已将架构部署到生产环境?
  5. 共享记录是否位于自定义分区(CKShare的要求)?