Fetch, create, update, and pick contacts from the user's Contacts database using CNContactStore, CNSaveRequest, and CNContactPickerViewController. Targets Swift 6.2 / iOS 26+.
Request access before fetching or saving contacts. The picker (CNContactPickerViewController) does not require authorization -- the system grants access only to the contacts the user selects.
| .notDetermined | User has not been prompted yet | | .authorized | Full read/write access granted | | .denied | User denied access; direct to Settings | | .restricted | Parental controls or MDM restrict access | | .limited | iOS 18+: user granted access to selected contacts only |
Read, create, update, and pick contacts using the Contacts and ContactsUI frameworks. Use when fetching contact data, saving new contacts, wrapping CNContactPickerViewController in SwiftUI, handling contact permissions, or working with CNContactStore fetch and save requests. Source: dpearson2699/swift-ios-skills.