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


func ABMultiValueInsert(_ multiValue: ABMutableMultiValueRef!, _ value: CFTypeRef!, _ label: CFString!, _ index: CFIndex, _ outIdentifier: UnsafeMutablePointer<Unmanaged<CFString>?>!) -> Bool



The multi-value list you wish to modify.


An object representing a value in a multi-value list--it must be of the correct type. For example, if multiValue is the value for a property of type kABMultiStringProperty, then value needs to be a CFString object. See Property Types for a list of supported types in a multi-value list (see descriptions of the kABMulti... constants). If value is NULL, this function raises an exception.


The label for value—it need not be unique. If label is NULL, this function raises an exception.


The index to insert value at. If index is out of bounds, this function raises an exception.


If value is added successfully, this parameter returns the new identifier.

Return Value

true if successfully, false otherwise.


This function performs no type checking and will let you add a value whose type does not match the types of the other values in the list. However, if you try to use a multi-value list whose values are not all of the same type, functions, such as the ABRecord ABRecordSetValue(_:_:_:) function, will returns NULL or kABErrorProperty.

See Also

Multi Values

func ABMultiValueCount(ABMultiValueRef!) -> CFIndex

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

func ABMultiValueCreateMutable(ABPropertyType) -> Unmanaged<ABMutableMultiValue>!

Returns a newly created mutable multi-value list object.

func ABMultiValuePropertyType(ABMultiValueRef!) -> ABPropertyType

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

func ABMultiValueRemove(ABMutableMultiValueRef!, CFIndex) -> Bool

Removes the value and label at the given index.

func ABMultiValueSetPrimaryIdentifier(ABMutableMultiValueRef!, CFString!) -> Bool

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