<!--
{
  "documentType" : "article",
  "framework" : "AddressBook",
  "identifier" : "/documentation/AddressBook/addressbook-functions",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "AddressBook Functions"
}
-->

# AddressBook Functions

Find the C functions and function-like macros you use to manipulate Address Book data.

## Topics

### Address Book

[`func ABGetSharedAddressBook() -> Unmanaged<ABAddressBookRef>!`](/documentation/AddressBook/ABGetSharedAddressBook())

Returns the unique shared ABAddressBook object.

[`func ABCopyDefaultCountryCode(ABAddressBookRef!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABCopyDefaultCountryCode(_:))

Returns the default country code for records with unspecified country codes.

[`func ABHasUnsavedChanges(ABAddressBookRef!) -> Bool`](/documentation/AddressBook/ABHasUnsavedChanges(_:))

Returns whether if there are unsaved changes in the address book.

[`func ABSave(ABAddressBookRef!) -> Bool`](/documentation/AddressBook/ABSave(_:))

Saves all the changes made since the last save.

### People

[`func ABCopyArrayOfAllPeople(ABAddressBookRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABCopyArrayOfAllPeople(_:))

Returns an array of all the people in the Address Book database.

[`func ABGetMe(ABAddressBookRef!) -> Unmanaged<ABPersonRef>!`](/documentation/AddressBook/ABGetMe(_:))

Returns the ABPerson object for the logged-in user.

[`func ABPersonCopyImageData(ABRecord!) -> Unmanaged<CFData>!`](/documentation/AddressBook/ABPersonCopyImageData(_:))

Returns data that contains a picture of a person.

[`func ABPersonCopyParentGroups(ABPersonRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABPersonCopyParentGroups(_:))

Returns an array of groups that a person belongs to.

[`func ABPersonCopyVCardRepresentation(ABPersonRef!) -> Unmanaged<CFData>!`](/documentation/AddressBook/ABPersonCopyVCardRepresentation(_:))

Returns the vCard representation of the person as a data object in vCard format.

[`func ABPersonCreate() -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABPersonCreate())

Returns a newly created person object.

[`func ABPersonCreateSearchElement(CFString!, CFString!, CFString!, CFTypeRef!, ABSearchComparison) -> Unmanaged<ABSearchElementRef>!`](/documentation/AddressBook/ABPersonCreateSearchElement(_:_:_:_:_:))

Returns a search element object that specifies a query for records of this type.

[`func ABPersonCreateWithVCardRepresentation(CFData!) -> Unmanaged<ABPersonRef>!`](/documentation/AddressBook/ABPersonCreateWithVCardRepresentation(_:))

Returns a new ABPerson object initialized with the given data in vCard format.

[`func ABPersonSetImageData(ABRecord!, CFData!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABPersonSetImageData(_:_:_:))

Sets the image for this person to the given data.

[`func ABSetMe(ABAddressBookRef!, ABPersonRef!)`](/documentation/AddressBook/ABSetMe(_:_:))

Sets the record that represents the logged-in user.

### Groups

[`func ABCopyArrayOfAllGroups(ABAddressBookRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABCopyArrayOfAllGroups(_:))

Returns an array of all the groups in the Address Book database.

[`func ABGroupAddGroup(ABGroupRef!, ABGroupRef!) -> Bool`](/documentation/AddressBook/ABGroupAddGroup(_:_:))

Adds a subgroup to another group.

[`func ABGroupAddMember(ABRecord!, ABRecord!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABGroupAddMember(_:_:_:))

Adds a person to a group.

[`func ABGroupCopyArrayOfAllMembers(ABRecord!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABGroupCopyArrayOfAllMembers(_:))

Returns an array of persons in a group.

[`func ABGroupCopyArrayOfAllSubgroups(ABGroupRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABGroupCopyArrayOfAllSubgroups(_:))

Returns an array containing a group’s subgroups.

[`func ABGroupCopyDistributionIdentifier(ABGroupRef!, ABPersonRef!, CFString!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABGroupCopyDistributionIdentifier(_:_:_:))

Returns the distribution identifier for the given propertyand person.

[`func ABGroupCopyParentGroups(ABGroupRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABGroupCopyParentGroups(_:))

Returns an array containing a group’s parents—thegroups that a group belongs to.

[`func ABGroupCreate() -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABGroupCreate())

Returns a new ABGroup object.

[`func ABGroupCreateSearchElement(CFString!, CFString!, CFString!, CFTypeRef!, ABSearchComparison) -> Unmanaged<ABSearchElementRef>!`](/documentation/AddressBook/ABGroupCreateSearchElement(_:_:_:_:_:))

Creates an ABSearchElement object that specifies a queryfor ABGroup records.

[`func ABGroupRemoveGroup(ABGroupRef!, ABGroupRef!) -> Bool`](/documentation/AddressBook/ABGroupRemoveGroup(_:_:))

Removes a subgroup from a group.

[`func ABGroupRemoveMember(ABRecord!, ABRecord!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABGroupRemoveMember(_:_:_:))

Removes a person from a group.

[`func ABGroupSetDistributionIdentifier(ABGroupRef!, ABPersonRef!, CFString!, CFString!) -> Bool`](/documentation/AddressBook/ABGroupSetDistributionIdentifier(_:_:_:_:))

Assigning a specific distribution identifier for a person’smulti-value list property so that the group can be used as a distributionlist (mailing list, in the case of an email property).

### Multi Values

[`func ABMultiValueAdd(ABMutableMultiValueRef!, CFTypeRef!, CFString!, UnsafeMutablePointer<Unmanaged<CFString>?>!) -> Bool`](/documentation/AddressBook/ABMultiValueAdd(_:_:_:_:))

Adds a value and its label to a multi-value list.

[`func ABMultiValueCopyIdentifierAtIndex(ABMultiValueRef!, CFIndex) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABMultiValueCopyIdentifierAtIndex(_:_:))

Returns the identifier at the given index.

[`func ABMultiValueCopyLabelAtIndex(ABMultiValue!, CFIndex) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABMultiValueCopyLabelAtIndex(_:_:))

Returns the label for the given index.

[`func ABMultiValueCopyPrimaryIdentifier(ABMultiValueRef!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABMultiValueCopyPrimaryIdentifier(_:))

Returns the identifier for the primary value.

[`func ABMultiValueCopyValueAtIndex(ABMultiValue!, CFIndex) -> Unmanaged<CFTypeRef>!`](/documentation/AddressBook/ABMultiValueCopyValueAtIndex(_:_:))

Returns the value for the given index.

[`func ABMultiValueCount(ABMultiValueRef!) -> CFIndex`](/documentation/AddressBook/ABMultiValueCount(_:))

Returns the number of entries in a multi-value list.

[`func ABMultiValueCreate() -> Unmanaged<ABMultiValueRef>!`](/documentation/AddressBook/ABMultiValueCreate())

Returns a new ABMultiValue object.

[`func ABMultiValueCreateCopy(ABMultiValueRef!) -> Unmanaged<ABMultiValueRef>!`](/documentation/AddressBook/ABMultiValueCreateCopy(_:))

Returns a copy of a multi-value object.

[`func ABMultiValueCreateMutable(ABPropertyType) -> Unmanaged<ABMutableMultiValue>!`](/documentation/AddressBook/ABMultiValueCreateMutable(_:))

Returns a newly created mutable multi-value list object.

[`func ABMultiValueCreateMutableCopy(ABMultiValue!) -> Unmanaged<ABMutableMultiValue>!`](/documentation/AddressBook/ABMultiValueCreateMutableCopy(_:))

Returns a mutable copy of a multi-value object.

[`func ABMultiValueIndexForIdentifier(ABMultiValueRef!, CFString!) -> CFIndex`](/documentation/AddressBook/ABMultiValueIndexForIdentifier(_:_:))

Returns the index for the given identifier.

[`func ABMultiValueInsert(ABMutableMultiValueRef!, CFTypeRef!, CFString!, CFIndex, UnsafeMutablePointer<Unmanaged<CFString>?>!) -> Bool`](/documentation/AddressBook/ABMultiValueInsert(_:_:_:_:_:))

Inserts a value and its label at the given index in amulti-value list.

[`func ABMultiValuePropertyType(ABMultiValueRef!) -> ABPropertyType`](/documentation/AddressBook/ABMultiValuePropertyType(_:))

Returns the type for the values in a multi-value list.

[`func ABMultiValueRemove(ABMutableMultiValueRef!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueRemove(_:_:))

Removes the value and label at the given index.

[`func ABMultiValueReplaceLabel(ABMutableMultiValueRef!, CFString!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueReplaceLabel(_:_:_:))

Replaces the label at the given index.

[`func ABMultiValueReplaceValue(ABMutableMultiValueRef!, CFTypeRef!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueReplaceValue(_:_:_:))

Replaces the value at the given index.

[`func ABMultiValueSetPrimaryIdentifier(ABMutableMultiValueRef!, CFString!) -> Bool`](/documentation/AddressBook/ABMultiValueSetPrimaryIdentifier(_:_:))

Sets the primary value to be the value for the given identifier.

### Images

[`func ABBeginLoadingImageDataForClient(ABPersonRef!, ABImageClientCallback!, UnsafeMutableRawPointer!) -> CFIndex`](/documentation/AddressBook/ABBeginLoadingImageDataForClient(_:_:_:))

Starts an asynchronous fetch for image data in all locations, and returns a non-zero tag for tracking.

[`func ABCancelLoadingImageDataForTag(CFIndex)`](/documentation/AddressBook/ABCancelLoadingImageDataForTag(_:))

Cancels an asynchronous fetch of an image for the given tag.

### Search Elements

[`func ABCopyArrayOfMatchingRecords(ABAddressBookRef!, ABSearchElementRef!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABCopyArrayOfMatchingRecords(_:_:))

Returns an array of records that match the given search element, or an empty array if no records match the search element.

[`func ABSearchElementCreateWithConjunction(ABSearchConjunction, CFArray!) -> Unmanaged<ABSearchElementRef>!`](/documentation/AddressBook/ABSearchElementCreateWithConjunction(_:_:))

Returns a compound search element created by combiningthe search elements in an array with the given conjunction.

[`func ABSearchElementMatchesRecord(ABSearchElementRef!, ABRecordRef!) -> Bool`](/documentation/AddressBook/ABSearchElementMatchesRecord(_:_:))

Tests whether or not a record matches a search element.

### Properties

[`func ABAddPropertiesAndTypes(ABAddressBookRef!, CFString!, CFDictionary!) -> CFIndex`](/documentation/AddressBook/ABAddPropertiesAndTypes(_:_:_:))

Adds the given properties to all the records of the specified type in the Address Book database, and returns the number of properties successfully added.

[`func ABCopyArrayOfPropertiesForRecordType(ABAddressBookRef!, CFString!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABCopyArrayOfPropertiesForRecordType(_:_:))

Returns an array containing the names of all the properties for the specified record type.

[`func ABCopyLocalizedPropertyOrLabel(CFString!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABCopyLocalizedPropertyOrLabel(_:))

Returns the localized version of a built in property,label, or key.

[`func ABLocalizedPropertyOrLabel(String!) -> String!`](/documentation/AddressBook/ABLocalizedPropertyOrLabel(_:))

Returns the localized version of a built in property, label, or key.

[`func ABRemoveProperties(ABAddressBookRef!, CFString!, CFArray!) -> CFIndex`](/documentation/AddressBook/ABRemoveProperties(_:_:_:))

Removes the given properties from all the records of this type in the Address Book database, and returns the number of properties successfully removed.

[`func ABTypeOfProperty(ABAddressBookRef!, CFString!, CFString!) -> ABPropertyType`](/documentation/AddressBook/ABTypeOfProperty(_:_:_:))

Returns the type of a given property for a given record.

### Records

[`func ABAddRecord(ABAddressBookRef!, ABRecordRef!) -> Bool`](/documentation/AddressBook/ABAddRecord(_:_:))

Adds a record of the specified type to the Address Book database.

[`func ABCopyRecordForUniqueId(ABAddressBookRef!, CFString!) -> Unmanaged<ABRecordRef>!`](/documentation/AddressBook/ABCopyRecordForUniqueId(_:_:))

Returns the record that matches the given unique ID.

[`func ABCopyRecordTypeFromUniqueId(ABAddressBookRef!, CFString!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABCopyRecordTypeFromUniqueId(_:_:))

Returns the type name of the record that matches a given unique ID.

[`func ABCreateFormattedAddressFromDictionary(ABAddressBookRef!, CFDictionary!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABCreateFormattedAddressFromDictionary(_:_:))

Returns a string containing the formatted address.

[`func ABRecordCopyRecordType(ABRecordRef!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABRecordCopyRecordType(_:))

Returns the type of the given record.

[`func ABRecordCopyUniqueId(ABRecordRef!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABRecordCopyUniqueId(_:))

Returns the unique ID of the receiver.

[`func ABRecordCopyValue(ABRecord!, ABPropertyID) -> Unmanaged<CFTypeRef>!`](/documentation/AddressBook/ABRecordCopyValue(_:_:))

Returns the value of the given property.

[`func ABRecordCreateCopy(ABRecordRef!) -> Unmanaged<ABRecordRef>!`](/documentation/AddressBook/ABRecordCreateCopy(_:))

Returns a copy of the given record.

[`func ABRecordIsReadOnly(ABRecordRef!) -> Bool`](/documentation/AddressBook/ABRecordIsReadOnly(_:))

Returns whether or not the record is read-only.

[`func ABRecordRemoveValue(ABRecord!, ABPropertyID, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABRecordRemoveValue(_:_:_:))

Removes the value of the given property.

[`func ABRecordSetValue(ABRecord!, ABPropertyID, CFTypeRef!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABRecordSetValue(_:_:_:_:))

Sets the value of a given property for a record.

[`func ABRemoveRecord(ABAddressBookRef!, ABRecordRef!) -> Bool`](/documentation/AddressBook/ABRemoveRecord(_:_:))

Removes the specified record from the Address Book database.

### Deprecated

[`func ABAddressBookAddRecord(ABAddressBook!, ABRecord!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABAddressBookAddRecord(_:_:_:))

Adds a record to an address book.

[`func ABAddressBookCopyArrayOfAllGroups(ABAddressBook!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllGroups(_:))

Returns an array with all the groups in an address book.

[`func ABAddressBookCopyArrayOfAllGroupsInSource(ABAddressBook!, ABRecord!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllGroupsInSource(_:_:))

Returns an array of all groups from a particular source.

[`func ABAddressBookCopyArrayOfAllPeople(ABAddressBook!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllPeople(_:))

Returns all the person records in an address book.

[`func ABAddressBookCopyArrayOfAllPeopleInSource(ABAddressBook!, ABRecord!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllPeopleInSource(_:_:))

Returns an array of all person records from a particular source.

[`func ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(ABAddressBook!, ABRecord!, ABPersonSortOrdering) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(_:_:_:))

Returns an array of all person records in the address book, sorted with the specified order.

[`func ABAddressBookCopyArrayOfAllSources(ABAddressBook!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyArrayOfAllSources(_:))

Returns an array of all sources in the address book.

[`func ABAddressBookCopyDefaultSource(ABAddressBook!) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABAddressBookCopyDefaultSource(_:))

Returns the default source.

[`func ABAddressBookCopyLocalizedLabel(CFString!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABAddressBookCopyLocalizedLabel(_:))

Returns a localized version of a record-property label.

[`func ABAddressBookCopyPeopleWithName(ABAddressBook!, CFString!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABAddressBookCopyPeopleWithName(_:_:))

Performs a prefix search on the composite names of people in an address book and returns an array of persons that match the search criteria.

[`func ABAddressBookCreate() -> Unmanaged<ABAddressBook>!`](/documentation/AddressBook/ABAddressBookCreate())

Creates a new address book object with data from the Address Book database.

[`func ABAddressBookCreateWithOptions(CFDictionary!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Unmanaged<ABAddressBook>!`](/documentation/AddressBook/ABAddressBookCreateWithOptions(_:_:))

Creates a new address book object with data from the Address Book database.

[`func ABAddressBookGetAuthorizationStatus() -> ABAuthorizationStatus`](/documentation/AddressBook/ABAddressBookGetAuthorizationStatus())

Returns the authorization status of your app for accessing address book data.

[`func ABAddressBookGetGroupCount(ABAddressBook!) -> CFIndex`](/documentation/AddressBook/ABAddressBookGetGroupCount(_:))

Returns the number of groups in an address book.

[`func ABAddressBookGetGroupWithRecordID(ABAddressBook!, ABRecordID) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABAddressBookGetGroupWithRecordID(_:_:))

Returns the group with a given record ID.

[`func ABAddressBookGetPersonCount(ABAddressBook!) -> CFIndex`](/documentation/AddressBook/ABAddressBookGetPersonCount(_:))

Returns the number of person records in an address book.

[`func ABAddressBookGetPersonWithRecordID(ABAddressBook!, ABRecordID) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABAddressBookGetPersonWithRecordID(_:_:))

Returns the person record with a given record ID.

[`func ABAddressBookGetSourceWithRecordID(ABAddressBook!, ABRecordID) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABAddressBookGetSourceWithRecordID(_:_:))

Returns the source record with the given record ID.

[`func ABAddressBookHasUnsavedChanges(ABAddressBook!) -> Bool`](/documentation/AddressBook/ABAddressBookHasUnsavedChanges(_:))

Indicates whether an address book has changes that have not been saved to the Address Book database.

[`func ABAddressBookRegisterExternalChangeCallback(ABAddressBook!, ABExternalChangeCallback!, UnsafeMutableRawPointer!)`](/documentation/AddressBook/ABAddressBookRegisterExternalChangeCallback(_:_:_:))

Registers a callback to receive notifications when the Address Book database is modified.

[`func ABAddressBookRemoveRecord(ABAddressBook!, ABRecord!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABAddressBookRemoveRecord(_:_:_:))

Removes a record from an address book.

[`func ABAddressBookRequestAccessWithCompletion(ABAddressBook!, ABAddressBookRequestAccessCompletionHandler!)`](/documentation/AddressBook/ABAddressBookRequestAccessWithCompletion(_:_:))

Requests access to address book data from the user.

[`func ABAddressBookRevert(ABAddressBook!)`](/documentation/AddressBook/ABAddressBookRevert(_:))

Discards unsaved changes in an address book.

[`func ABAddressBookSave(ABAddressBook!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABAddressBookSave(_:_:))

Saves any unsaved changes to the Address Book database.

[`func ABAddressBookUnregisterExternalChangeCallback(ABAddressBook!, ABExternalChangeCallback!, UnsafeMutableRawPointer!)`](/documentation/AddressBook/ABAddressBookUnregisterExternalChangeCallback(_:_:_:))

Unregisters a callback.

[`func ABGroupCopyArrayOfAllMembersWithSortOrdering(ABRecord!, ABPersonSortOrdering) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABGroupCopyArrayOfAllMembersWithSortOrdering(_:_:))

Returns the records in a group, using a sort ordering.

[`func ABGroupCopySource(ABRecord!) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABGroupCopySource(_:))

Returns the source that the group is from.

[`func ABGroupCreateInSource(ABRecord!) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABGroupCreateInSource(_:))

Creates a group in a particular source.

[`func ABMultiValueAddValueAndLabel(ABMutableMultiValue!, CFTypeRef!, CFString!, UnsafeMutablePointer<ABMultiValueIdentifier>!) -> Bool`](/documentation/AddressBook/ABMultiValueAddValueAndLabel(_:_:_:_:))

Adds a value and its corresponding label to a multivalue property.

[`func ABMultiValueCopyArrayOfAllValues(ABMultiValue!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABMultiValueCopyArrayOfAllValues(_:))

Returns an array with the values in a multivalue property.

[`func ABMultiValueGetCount(ABMultiValue!) -> CFIndex`](/documentation/AddressBook/ABMultiValueGetCount(_:))

Returns the number of values in a multivalue property.

[`func ABMultiValueGetFirstIndexOfValue(ABMultiValue!, CFTypeRef!) -> CFIndex`](/documentation/AddressBook/ABMultiValueGetFirstIndexOfValue(_:_:))

Returns the first location of a value in a multivalue property.

[`func ABMultiValueGetIdentifierAtIndex(ABMultiValue!, CFIndex) -> ABMultiValueIdentifier`](/documentation/AddressBook/ABMultiValueGetIdentifierAtIndex(_:_:))

Returns the identifier of a value in a multivalue property.

[`func ABMultiValueGetIndexForIdentifier(ABMultiValue!, ABMultiValueIdentifier) -> CFIndex`](/documentation/AddressBook/ABMultiValueGetIndexForIdentifier(_:_:))

Returns the location (within a multivalue property) of a value with a given identifier.

[`func ABMultiValueGetPropertyType(ABMultiValue!) -> ABPropertyType`](/documentation/AddressBook/ABMultiValueGetPropertyType(_:))

Returns the type of the values contained in a multivalue property.

[`func ABMultiValueInsertValueAndLabelAtIndex(ABMutableMultiValue!, CFTypeRef!, CFString!, CFIndex, UnsafeMutablePointer<ABMultiValueIdentifier>!) -> Bool`](/documentation/AddressBook/ABMultiValueInsertValueAndLabelAtIndex(_:_:_:_:_:))

Inserts a value and a label into a multivalue property.

[`func ABMultiValueRemoveValueAndLabelAtIndex(ABMutableMultiValue!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueRemoveValueAndLabelAtIndex(_:_:))

Removes a value from a multivalue property.

[`func ABMultiValueReplaceLabelAtIndex(ABMutableMultiValue!, CFString!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueReplaceLabelAtIndex(_:_:_:))

Replaces a label in a multivalue property with another label.

[`func ABMultiValueReplaceValueAtIndex(ABMutableMultiValue!, CFTypeRef!, CFIndex) -> Bool`](/documentation/AddressBook/ABMultiValueReplaceValueAtIndex(_:_:_:))

Replaces a value in a multivalue property with another value.

[`func ABPersonComparePeopleByName(ABRecord!, ABRecord!, ABPersonSortOrdering) -> CFComparisonResult`](/documentation/AddressBook/ABPersonComparePeopleByName(_:_:_:))

Indicates how two person records get sorted.

[`func ABPersonCopyArrayOfAllLinkedPeople(ABRecord!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABPersonCopyArrayOfAllLinkedPeople(_:))

Returns an array of all person records in the address book database that are linked to the given person record.

[`func ABPersonCopyCompositeNameDelimiterForRecord(ABRecord!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABPersonCopyCompositeNameDelimiterForRecord(_:))

Returns the delimiter to use between name components.

[`func ABPersonCopyImageDataWithFormat(ABRecord!, ABPersonImageFormat) -> Unmanaged<CFData>!`](/documentation/AddressBook/ABPersonCopyImageDataWithFormat(_:_:))

Returns the picture for a person record in the given format.

[`func ABPersonCopyLocalizedPropertyName(ABPropertyID) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABPersonCopyLocalizedPropertyName(_:))

Returns the localized name of a person property

[`func ABPersonCopySource(ABRecord!) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABPersonCopySource(_:))

Returns the source that the person record is from.

[`func ABPersonCreateInSource(ABRecord!) -> Unmanaged<ABRecord>!`](/documentation/AddressBook/ABPersonCreateInSource(_:))

Creates a new person record in a particular source.

[`func ABPersonCreatePeopleInSourceWithVCardRepresentation(ABRecord!, CFData!) -> Unmanaged<CFArray>!`](/documentation/AddressBook/ABPersonCreatePeopleInSourceWithVCardRepresentation(_:_:))

Creates person records from the given vCard representation.

[`func ABPersonCreateVCardRepresentationWithPeople(CFArray!) -> Unmanaged<CFData>!`](/documentation/AddressBook/ABPersonCreateVCardRepresentationWithPeople(_:))

Returns the vCard representation of the given person records.

[`func ABPersonGetCompositeNameFormat() -> ABPersonCompositeNameFormat`](/documentation/AddressBook/ABPersonGetCompositeNameFormat())

Returns the person-name display format.

[`func ABPersonGetCompositeNameFormatForRecord(ABRecord!) -> ABPersonCompositeNameFormat`](/documentation/AddressBook/ABPersonGetCompositeNameFormatForRecord(_:))

Returns the person-name display format to use for the given record.

[`func ABPersonGetSortOrdering() -> ABPersonSortOrdering`](/documentation/AddressBook/ABPersonGetSortOrdering())

Returns the user’s sort-ordering preference for lists of persons.

[`func ABPersonGetTypeOfProperty(ABPropertyID) -> ABPropertyType`](/documentation/AddressBook/ABPersonGetTypeOfProperty(_:))

Returns the type of a person property.

[`func ABPersonHasImageData(ABRecord!) -> Bool`](/documentation/AddressBook/ABPersonHasImageData(_:))

Indicates whether a person has a picture.

[`func ABPersonRemoveImageData(ABRecord!, UnsafeMutablePointer<Unmanaged<CFError>?>!) -> Bool`](/documentation/AddressBook/ABPersonRemoveImageData(_:_:))

Removes a person’s picture.

[`func ABRecordCopyCompositeName(ABRecord!) -> Unmanaged<CFString>!`](/documentation/AddressBook/ABRecordCopyCompositeName(_:))

Returns an appropriate, human-friendly name for the record.

[`func ABRecordGetRecordID(ABRecord!) -> ABRecordID`](/documentation/AddressBook/ABRecordGetRecordID(_:))

Returns the unique ID of a record.

[`func ABRecordGetRecordType(ABRecord!) -> ABRecordType`](/documentation/AddressBook/ABRecordGetRecordType(_:))

Returns the type of a record.

### Functions

[`extern void ABPickerAddProperty(ABPickerRef inPicker, CFStringRef inProperty);`](/documentation/AddressBook/ABPickerAddProperty)

Adds a property to the group of properties available in the record list. Use [`ABPickerRemoveProperty`](/documentation/AddressBook/ABPickerRemoveProperty) to remove a property from the list and [`ABPickerCopyProperties`](/documentation/AddressBook/ABPickerCopyProperties) to obtain the list of properties available in the list.

[`extern void ABPickerChangeAttributes(ABPickerRef inPicker, ABPickerAttributes inAttributesToSet, ABPickerAttributes inAttributesToClear);`](/documentation/AddressBook/ABPickerChangeAttributes)

Specifies the selection behaviors for a people-picker window. Use `ABPickerGetAttributes` to obtain the selection behaviors specified for the window.

[`extern void ABPickerClearSearchField(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerClearSearchField)

Clears the search field and resets the list of displayed records.

[`extern CFStringRefABPickerCopyColumnTitle(ABPickerRef inPicker, CFStringRef inProperty);`](/documentation/AddressBook/ABPickerCopyColumnTitle)

Obtains the title of a custom property.

[`extern CFStringRefABPickerCopyDisplayedProperty(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerCopyDisplayedProperty)

Returns the name of the property currently displayed in the record list.

[`extern CFArrayRefABPickerCopyProperties(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerCopyProperties)

Obtains the list of properties available in the record list. Use [`ABPickerAddProperty`](/documentation/AddressBook/ABPickerAddProperty) to add a property to the record list and [`ABPickerRemoveProperty`](/documentation/AddressBook/ABPickerRemoveProperty) to remove a property from the list.

[`extern CFArrayRefABPickerCopySelectedGroups(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerCopySelectedGroups)

Returns the groups selected in the group list as an array of `ABRecord C` objects.

[`extern CFArrayRefABPickerCopySelectedIdentifiers(ABPickerRef inPicker, ABPersonRef inPerson);`](/documentation/AddressBook/ABPickerCopySelectedIdentifiers)

Returns the identifiers of the selected values in a multi-value property or an empty array if the property displayed is a single-value property.

[`extern CFArrayRefABPickerCopySelectedRecords(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerCopySelectedRecords)

Returns the selection in the record list as an array of ABGroup or `ABPerson C` objects.

[`extern CFArrayRefABPickerCopySelectedValues(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerCopySelectedValues)

Returns the selected values in a multi-value property or an empty array if no values are selected or the property displayedis a single-value property.

[`extern ABPickerRefABPickerCreate();`](/documentation/AddressBook/ABPickerCreate)

Creates an ABPickerRef. The corresponding window is hidden. Invoke [`ABPickerSetVisibility`](/documentation/AddressBook/ABPickerSetVisibility) to show it. Release with `CFRelease`.

[`extern void ABPickerDeselectAll(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerDeselectAll)

Deselects all selected groups, records, and values in multi-value properties.

[`extern void ABPickerDeselectGroup(ABPickerRef inPicker, ABGroupRef inGroup);`](/documentation/AddressBook/ABPickerDeselectGroup)

Deselects a group in the group list.

[`extern void ABPickerDeselectIdentifier(ABPickerRef inPicker, ABPersonRef inPerson, CFStringRef inIdentifier);`](/documentation/AddressBook/ABPickerDeselectIdentifier)

Deselects a value in multi-value property currently displayed in the record list.

[`extern void ABPickerDeselectRecord(ABPickerRef inPicker, ABRecordRef inRecord);`](/documentation/AddressBook/ABPickerDeselectRecord)

Deselects a group in the record list.

[`extern void ABPickerEditInAddressBook(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerEditInAddressBook)

Launches Address Book to edit the item selected in the people-picker window.

[`extern ABPickerAttributes ABPickerGetAttributes(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerGetAttributes)

Indicates the selection behaviors selected a people-picker window. Use [`ABPickerChangeAttributes`](/documentation/AddressBook/ABPickerChangeAttributes) tospecify selection behaviors for the window.

[`extern EventTargetRefABPickerGetDelegate(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerGetDelegate)

Obtains the delegate for a people-picker window.

[`extern void ABPickerGetFrame(ABPickerRef inPicker, HIRect *outFrame);`](/documentation/AddressBook/ABPickerGetFrame)

Returns the position and size of the people-picker window.

[`extern bool ABPickerIsVisible(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerIsVisible)

Indicates whether the people-picker window is visible.

[`extern void ABPickerRemoveProperty(ABPickerRef inPicker, CFStringRef inProperty);`](/documentation/AddressBook/ABPickerRemoveProperty)

Removes a property from the group of properties whose values are shown in the record list. Use [`ABPickerAddProperty`](/documentation/AddressBook/ABPickerAddProperty) to add a property to the record list and [`ABPickerCopyProperties`](/documentation/AddressBook/ABPickerCopyProperties) to obtain the list of properties shown in the record list.

[`extern void ABPickerSelectGroup(ABPickerRef inPicker, ABGroupRef inGroup, bool inExtendSelection);`](/documentation/AddressBook/ABPickerSelectGroup)

Selects a group or a set of groups in the group list.

[`extern void ABPickerSelectIdentifier(ABPickerRef inPicker, ABPersonRef inPerson, CFStringRef inIdentifier, bool inExtendSelection);`](/documentation/AddressBook/ABPickerSelectIdentifier)

Selects a value or a set of values in a multi-value property.

[`extern void ABPickerSelectInAddressBook(ABPickerRef inPicker);`](/documentation/AddressBook/ABPickerSelectInAddressBook)

Launches Address Book and selects the item selected in the people-picker window.

[`extern void ABPickerSelectRecord(ABPickerRef inPicker, ABRecordRef inRecord, bool inExtendSelection);`](/documentation/AddressBook/ABPickerSelectRecord)

Selects a record or a set of records in the record list.

[`extern void ABPickerSetColumnTitle(ABPickerRef inPicker, CFStringRef inTitle, CFStringRef inProperty);`](/documentation/AddressBook/ABPickerSetColumnTitle)

Sets the title for a custom property.

[`extern void ABPickerSetDelegate(ABPickerRef inPicker, EventTargetRef inDelegate);`](/documentation/AddressBook/ABPickerSetDelegate)

Sets the event handler for people-picker events.

[`extern void ABPickerSetDisplayedProperty(ABPickerRef inPicker, CFStringRef inProperty);`](/documentation/AddressBook/ABPickerSetDisplayedProperty)

Displays one of the properties whose values are shownin the record list.

[`extern void ABPickerSetFrame(ABPickerRef inPicker, const HIRect *inFrame);`](/documentation/AddressBook/ABPickerSetFrame)

Specifies the position and size of the people-picker window.

[`extern void ABPickerSetVisibility(ABPickerRef inPicker, bool visible);`](/documentation/AddressBook/ABPickerSetVisibility)

Shows or hides a people-picker window.



---

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)