Class

CNContactStore

The object that fetches and saves contacts, groups, and containers from the user's contacts database.

Declaration

class CNContactStore : NSObject

Overview

The CNContactStore object represents the user's contacts store database, and you use it to fetch information from that database and save changes back to it. There are a few recommended ways you can implement fetch and save requests in your app:

  • Fetch only the properties that you need for contacts.

  • When fetching all contacts and caching the results, first fetch all contacts identifiers, then fetch batches of detailed contacts by identifiers as required.

  • To aggregate several contacts fetches, first collect a set of unique identifiers from the fetches. Then fetch batches of detailed contacts by those unique identifiers.

  • If you cache the fetched contacts, groups, or containers, you need to refetch these objects (and release the old cached objects) when CNContactStoreDidChange is posted.

Because CNContactStore fetch methods perform I/O, it’s recommended that you avoid using the main thread to execute fetches.

Topics

Requesting Access to the User's Contacts

class func authorizationStatus(for: CNEntityType) -> CNAuthorizationStatus

Returns the current authorization status to access the contact data.

enum CNAuthorizationStatus

An authorization status the user can grant for an app to access the specified entity type.

enum CNEntityType

The entities the user can grant access to.

Fetching Contacts

func enumerateContacts(with: CNContactFetchRequest, usingBlock: (CNContact, UnsafeMutablePointer<ObjCBool>) -> Void)

Returns a Boolean value that indicates whether the enumeration of all contacts matching a contact fetch request executed successfully.

func unifiedMeContactWithKeys(toFetch: [CNKeyDescriptor]) -> CNContact

Fetches the unified contact that is the "me" card.

func unifiedContact(withIdentifier: String, keysToFetch: [CNKeyDescriptor]) -> CNContact

Fetches a unified contact for the specified contact identifier.

func unifiedContacts(matching: NSPredicate, keysToFetch: [CNKeyDescriptor]) -> [CNContact]

Fetches all unified contacts matching the specified predicate.

Fetching Groups and Containers

func defaultContainerIdentifier() -> String

Returns the identifier of the default container.

func groups(matching: NSPredicate?) -> [CNGroup]

Fetches all groups matching the specified predicate.

func containers(matching: NSPredicate?) -> [CNContainer]

Fetches all containers matching the specified predicate.

Saving Changes

func execute(CNSaveRequest)

Executes a save request and returns success or failure.

Responding to Contact Store Changes

static let CNContactStoreDidChange: NSNotification.Name

Posted when changes occur to the contact store.

Instance Properties

Relationships

Inherits From

Conforms To

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software