I need to reference ABPerson records from within an application. I use the unique ID provided by
- (NSString *)uniqueId
and attach it to my in-app contact record.
Additionally, I save ABPerson’s vCardRepresentation as a fallback. In case the app isn’t any longer able to locate the ABRecord using the uniqueID, the app asks the user to recover the adressbook record using the saved vCardRepresentation. All works fine.
Unfortunately, a friend told me, that uniqueId isn’t immutable: During a sync, uniqueId may suddenly change.
According to him, somewhere in iOS documentation, Apple explains that no way exists to immutable identify ABPersons using uniqueId. In OS X’ Cocoa documentation, I failed to find such a hint.
On a given Mac, may the uniqueId change suddenly? If that’s true, what’s the correct way to identify ABPerson records from within an external application?
In case the uniqueID isn’t immutable, I certainly may assign a custom property with a GUID. Unfortunately, custom fields do not sync.
Certainly, I’d prefer to use uniqueId.
For whats its worth, from Apple’s techdoc:
kABUIDProperty
The unique ID for this record. It’s guaranteed never to change, no matter how much the record changes. If you need to store a reference to a record, use this value. Type: kABStringProperty.
Available in Mac OS X v10.2 and later.
Declared in ABGlobals.h.