У меня проблема с фреймворком AddressBook. Кажется, все это происходит из-за того, что ABCopyRecordForUniqueId возвращает запись со старыми данными.
Пример:
Я запускаю приведенную ниже программу в одном окне терминала - она показывает текущие данные.
Я вношу изменения в пользовательском интерфейсе адресной книги - моя программа продолжает показывать старые данные.
Я запускаю другой экземпляр той же программы в новом окне терминала - он показывает обновленные данные.
Я безуспешно пробовал размещать сообщения на сайте омнигруппы :( так что любые рекомендации действительно приветствуются
PS: Если вы хотите попробовать код, чтобы получить идентификатор адресной книги, вы можете экспортировать контакт как vCard и открыть его с помощью текстового редактора.
int main (int argc, const char * argv[])
{
ABAddressBookRef addressBook = ABGetSharedAddressBook();
while(1)
{
ABRecordRef addressBookRecord = NULL;
addressBookRecord = ABCopyRecordForUniqueId(addressBook, CFSTR("4064D587-0378-4DCF-A6B9-D3702F01C94C:ABPerson"));
CFShow(addressBookRecord);
CFRelease(addressBookRecord);
sleep(1);
}
return 0;
}