Подтвердить что ты не робот

Есть ли способ получить идентификатор контакта адресной книги из ID контакта Sync Services?

При получении измененных контактов из служб синхронизации с помощью метода applyChange:forEntityName:remappedRecordIdentifier:formattedRecord:error. Идентификаторы в адресной книге имеют форму 2C13E20E-6B24-4090-81FA-7A1E8B28119B, и хотя некоторые идентификаторы такого типа присутствуют в объекте ISyncChange *, это не фактический идентификатор контакта, который можно найти в адресной книге...

Есть ли способ узнать из службы синхронизации, какой идентификатор контакта указан в адресной книге?


Причина заключается в том, что при сохранении больших изображений для контактов в адресной книге службы синхронизации не сохраняют эти изображения во внутреннем хранилище данных. Поэтому контакты, которые были изменены или добавлены с большим изображением, будут возвращены службами синхронизации без картинки, в основном предлагая неполную информацию.

Мне нужно получить идентификатор адресной книги, чтобы я мог посмотреть изображение контакта в ~/Library/Application Support/Address Book/Images/

Спасибо!

4b9b3361

Ответ 1

Плохая идея полагаться на идентификатор адресной книги, связанный с изображением в ~/Library/Application Support/Address Book/Images/- вам лучше найти API, который предоставит вам данные, которые вы хотите использовать с, потому что вам не гарантировано, что изображение будет там тогда или позже (после обновления все это может измениться!).

После небольшого количества исследований, похоже, что API, который вы хотите, задокументирован здесь: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AddressBook/Tasks/AccessingData.html#//apple_ref/doc/uid/20001023-103617

Это немного громоздко, потому что вам обязательно нужно понять их протокол ABImageClient и обеспечить обратный вызов, но я не думаю, что это плохо. Этот подход намного лучше, чем то, что вы делали, - это Apple, санкционированный способом получения этих данных, и вам не придется беспокоиться о том, что он будет нарушаться в будущем.