2011-11-02 74 views
13

当从Sync Services获取修改的联系人时,通过applyChange:forEntityName:remappedRecordIdentifier:formattedRecord:error方法。地址簿中的ID格式为2C13E20E-6B24-4090-81FA-7A1E8B28119B,即使ISyncChange *对象中存在某些此类ID,它们也不是可在地址簿中找到的实际联系人ID ...有没有办法从同步服务联系人ID中获取地址簿联系人ID?

Is有一种方法可以从Sync Services中找到地址簿中某个联系人的ID是什么?


询问的原因是,当在地址簿中保存联系人的大图片时,Sync Services不会将这些图片保存在其内部数据存储中。因此,经过修改或添加大图片的联系人将由Sync Services在没有图片的情况下返回,基本上会提供不完整的信息。

我需要得到的地址簿ID,这样我可以查找联系人的图片在~/Library/Application Support/Address Book/Images/

谢谢!

回答

1

依赖与〜/库/应用程序支持/地址簿/图像/中的图像相关的地址簿标识是个坏主意 - 您最好找到一个API,为您提供所需的数据与之合作,因为你不能保证图像会在那里或以后(在升级后,这一切都会改变!)。

一小部分研究量之后,似乎你想要的API被记录在这里:http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AddressBook/Tasks/AccessingData.html#//apple_ref/doc/uid/20001023-103617

这是一个有点笨拙,因为你一定要了解他们的ABImageClient协议,并提供一个回调,但我不认为那是糟糕的。这种方法比您所做的要好得多 - 这是苹果公司批准获取这些数据的方式,您不必担心它将来会崩溃。

+0

我想你的意思是使用'imageData'来获取联系人的图像数据。我如何获得该联系人?我需要以某种方式获得他的ID。 – Andrei

+0

嗯,当我最初读到这个时,我完全错过了那部分问题。我正在尝试阅读ApplyChange同步服务文档:ForEntityName:但由于Apple决定在Lion中弃用该API,因此他们从developer.apple.com中删除了所有文档。也许有人更了解同步服务知道如何从iSyncChange对象ID获取AB中联系人的底层uuid。 – tjarratt