用途:在 iOS 应用中读取、创建、更新、删除和选择用户联系人,基于 Contacts 与 ContactsUI 框架,目标 Swift 6.3 / iOS 26+。
主要能力:通过 CNContactStore 请求授权并查询联系人;用 unifiedContacts(matching:keysToFetch:) 按谓词查询,用 enumerateContacts(with:usingBlock:) 批量枚举;用 CNMutableContact 与 CNSaveRequest 创建、更新、删除联系人;用 CNContactPickerViewController 让用户选择联系人而无需完整通讯录权限;通过 CNContactStoreDidChange 通知监听外部变更。
必要用法:在 Info.plist 添加 NSContactsUsageDescription;基础访问无需额外能力,访问备注需 com.apple.developer.contacts.notes 权限。导入 import Contacts 与 import ContactsUI。获取或保存前先调用 store.requestAccess(for: .contacts),可用 CNContactStore.authorizationStatus(for:) 检查状态(.notDetermined、.authorized、.denied、.restricted、.limited)。只请求需要的 CNKeyDescriptor,访问未获取属性会抛 CNContactPropertyNotFetchedException。修改联系人须先 mutableCopy() 得到 CNMutableContact,再经 CNSaveRequest 执行。枚举等重 I/O 操作应放到主线程之外。
适用场景:需要读取或写入系统通讯录、提供联系人选择器、缓存并刷新联系人数据的 iOS 应用。
限制:选择器无需授权,但仅返回用户所选联系人;授权被拒需引导用户前往设置;未提供具体收费、价格或平台支持范围等信息。