<!--
{
  "availability" : [
    "iOS: 9.0.0 -",
    "iPadOS: 9.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.11.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Contacts",
  "identifier" : "/documentation/Contacts/CNContact",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Contacts"
    ],
    "preciseIdentifier" : "c:objc(cs)CNContact"
  },
  "title" : "CNContact"
}
-->

# CNContact

An immutable object that stores information about a single contact, such as the contact’s first name, phone numbers, and addresses.

```
class CNContact
```

## Overview

A `CNContact` object stores an immutable copy of a contact’s information, so you cannot change the information in this object directly. Contact objects are thread-safe, so you may access them from any thread of your app.

To modify a contact’s information, call the <doc://com.apple.documentation/documentation/ObjectiveC/NSObject-swift.class/mutableCopy()> method to obtain a [`CNMutableContact`](/documentation/Contacts/CNMutableContact) object with the same information. After modifying the mutable contact, save your changes back to the contacts database using the [`CNContactStore`](/documentation/Contacts/CNContactStore) object.

Every contact in the contacts database has a unique ID, which you access using the [`identifier`](/documentation/Contacts/CNContact/identifier) property. The mutable and immutable versions of the same contact have the same identifier.

## Topics

### Identifying the Contact

[`identifier`](/documentation/Contacts/CNContact/identifier)

A value that uniquely identifies a contact on the device.

[`contactType`](/documentation/Contacts/CNContact/contactType)

An enum identifying the contact type.

[`CNContactType`](/documentation/Contacts/CNContactType)

The types a contact can be.

### Getting Name Information

[`namePrefix`](/documentation/Contacts/CNContact/namePrefix)

The name prefix of the contact.

[`givenName`](/documentation/Contacts/CNContact/givenName)

The given name of the contact.

[`middleName`](/documentation/Contacts/CNContact/middleName)

The middle name of the contact.

[`familyName`](/documentation/Contacts/CNContact/familyName)

The family name of the contact.

[`previousFamilyName`](/documentation/Contacts/CNContact/previousFamilyName)

A string for the previous family name of the contact.

[`nameSuffix`](/documentation/Contacts/CNContact/nameSuffix)

The name suffix of the contact.

[`nickname`](/documentation/Contacts/CNContact/nickname)

The nickname of the contact.

[`phoneticGivenName`](/documentation/Contacts/CNContact/phoneticGivenName)

The phonetic given name of the contact.

[`phoneticMiddleName`](/documentation/Contacts/CNContact/phoneticMiddleName)

The phonetic middle name of the contact.

[`phoneticFamilyName`](/documentation/Contacts/CNContact/phoneticFamilyName)

A string for the phonetic family name of the contact.

### Getting Work Information

[`jobTitle`](/documentation/Contacts/CNContact/jobTitle)

The contact’s job title.

[`departmentName`](/documentation/Contacts/CNContact/departmentName)

The name of the department associated with the contact.

[`organizationName`](/documentation/Contacts/CNContact/organizationName)

The name of the organization associated with the contact.

[`phoneticOrganizationName`](/documentation/Contacts/CNContact/phoneticOrganizationName)

The phonetic name of the organization associated with the contact.

### Getting Addresses

[`postalAddresses`](/documentation/Contacts/CNContact/postalAddresses)

An array of labeled postal addresses for a contact.

[`emailAddresses`](/documentation/Contacts/CNContact/emailAddresses)

An array of labeled email addresses for the contact.

[`urlAddresses`](/documentation/Contacts/CNContact/urlAddresses)

An array of labeled URL addresses for a contact.

### Getting Phone Information

[`phoneNumbers`](/documentation/Contacts/CNContact/phoneNumbers)

An array of labeled phone numbers for a contact.

### Getting Social Profiles

[`socialProfiles`](/documentation/Contacts/CNContact/socialProfiles)

An array of labeled social profiles for a contact.

### Getting Birthday Information

[`birthday`](/documentation/Contacts/CNContact/birthday)

A date component for the Gregorian birthday of the contact.

[`nonGregorianBirthday`](/documentation/Contacts/CNContact/nonGregorianBirthday)

A date component for the non-Gregorian birthday of the contact.

[`dates`](/documentation/Contacts/CNContact/dates)

An array containing labeled Gregorian dates.

### Getting Notes

[`note`](/documentation/Contacts/CNContact/note)

A string containing notes for the contact.

### Getting Contact Images

[`imageData`](/documentation/Contacts/CNContact/imageData)

The profile picture of a contact.

[`thumbnailImageData`](/documentation/Contacts/CNContact/thumbnailImageData)

The thumbnail version of the contact’s profile picture.

[`imageDataAvailable`](/documentation/Contacts/CNContact/imageDataAvailable)

A Boolean indicating whether a contact has a profile picture.

### Getting Related Information

[`contactRelations`](/documentation/Contacts/CNContact/contactRelations)

An array of labeled relations for the contact.

[`instantMessageAddresses`](/documentation/Contacts/CNContact/instantMessageAddresses)

An array of labeled IM addresses for the contact.

### Localizing Contact Data

[`localizedString(forKey:)`](/documentation/Contacts/CNContact/localizedString(forKey:))

Returns a string containing the localized contact property name.

### Comparing Contacts

[`descriptorForAllComparatorKeys()`](/documentation/Contacts/CNContact/descriptorForAllComparatorKeys())

Fetches all the keys required for the contact sort comparator.

[`comparator(forNameSortOrder:)`](/documentation/Contacts/CNContact/comparator(forNameSortOrder:))

Returns a comparator to sort contacts with the specified order.

[`isUnifiedWithContact(withIdentifier:)`](/documentation/Contacts/CNContact/isUnifiedWithContact(withIdentifier:))

Returns a Boolean indicating whether the current contact is a unified contact and includes a contact with the specified identifier.

[`CNContactSortOrder`](/documentation/Contacts/CNContactSortOrder)

Indicates the sorting order for contacts.

### Checking the Availability of Data

[`isKeyAvailable(_:)`](/documentation/Contacts/CNContact/isKeyAvailable(_:))

Determines whether the contact property value for the specified key is fetched.

[`areKeysAvailable(_:)`](/documentation/Contacts/CNContact/areKeysAvailable(_:))

Determines whether all contact property values for the specified keys are fetched.

### Getting Search Predicates

Predicates to match contacts. You can only use these predicates with [`CNContactStore`](/documentation/Contacts/CNContactStore)

The object that fetches and saves contacts, groups, and containers from the user’s Contacts database. and [`CNContactFetchRequest`](/documentation/Contacts/CNContactFetchRequest)

An object that defines the options to use when fetching contacts..

[`predicateForContacts(matchingName:)`](/documentation/Contacts/CNContact/predicateForContacts(matchingName:))

Returns a predicate to find the contacts matching the specified name.

[`predicateForContacts(withIdentifiers:)`](/documentation/Contacts/CNContact/predicateForContacts(withIdentifiers:))

Returns a predicate to find the contacts matching the specified identifiers.

[`predicateForContactsInGroup(withIdentifier:)`](/documentation/Contacts/CNContact/predicateForContactsInGroup(withIdentifier:))

Returns a predicate to find the contacts that are members in the specified group.

[`predicateForContactsInContainer(withIdentifier:)`](/documentation/Contacts/CNContact/predicateForContactsInContainer(withIdentifier:))

Returns a predicate to find the contacts in the specified container.

[`predicateForContacts(matching:)`](/documentation/Contacts/CNContact/predicateForContacts(matching:))

Returns a predicate to find the contacts whose phone number matches the specified value.

[`predicateForContacts(matchingEmailAddress:)`](/documentation/Contacts/CNContact/predicateForContacts(matchingEmailAddress:))

Returns a predicate to find the contacts whose email address matches the specified value.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)