re: Problem with vCard and AddressBook ABPerson UID, HELP!!
re: Problem with vCard and AddressBook ABPerson UID, HELP!!
- Subject: re: Problem with vCard and AddressBook ABPerson UID, HELP!!
- From: Ben Trumbull <email@hidden>
- Date: Wed, 7 Apr 2010 21:35:57 -0700
> 've been fighting now with the AdressBook API for a while and found a disturbing problem. Maybe someone can help.
>
> I'm trying to use the AddressBook as my main person "database" in my application. I've create a small function that accepts drag - drops from the Address book to add a new person in my app. So far so good.
>
> I'm trying after to show in my application details about that linked person and that's where everything falls down.
>
> On drop, I read the vCard created by the AddressBook using this line:
>
> ABPerson* aPerson = [[ABPerson alloc] initWithVCardRepresentation:filedata];
That always creates a brand new contact with a brand new uniqueID. As you observe. I'm pretty sure it's not an appropriate way to pass around a *reference* to an existing contact. That's what -[ABRecord uniqueId] is for. You should get the uniqueId, pass that around, and then use -[ABAddressBook recordForUniqueId:] to look up the contact.
- Ben
>
> When doing this, the UID of my person gets re-generated. I wanted to use the UID as my reference to my original address book record and dig the information using it. But since its re-generated upon read of the vCard, no luck. So the call:
> ABAddressBook* addressBook = [ABAddressBook addressBook];
> ABRecord* abRecord = [addressBook recordForUniqueId:personId];
>
> always return null.
> But, if I use the sharedAddressBook instead, my UIDs still get re-generated but this guy (the sharedAddressBook) can find the records but only in the same execution of the application. Upon restart, same old no-match problem.
>
> There must be something i REALLY don't understand about the AB but can't find anything more, out of ideas.
>
> Anybody knows what's going on? Any way we can prevent my vCard initialization from re-genrating the UID? If not, then what would be the correct way to refer to AB records from another application? Running a search based on names sounds bad compared to using direct pointers to records, the UID.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden