Используя адресную книгу C API
По большей части Objective C API имеет близкий метод и четность синтаксиса с API C. Это упрощает определять, например, какая функция соответствует данному методу Objective C.
Существует несколько первичных различий, что разработчики должны знать при использовании Адресной книги C о API:
Люди средство выбора прибывает только в окно, формируются, и не имеет API C для установки вспомогательного представление. Кроме того, изменения в выборе и выведенных на экран свойствах отправляются через События Углерода.
При создании плагина действия на базе С пакет должен реализовать вызванную функцию
ABActionRegisterCallbacks
, который возвратитсяABActionCallbacks
структура. Структура должна быть сформирована согласно этому определению типа:typedef struct {
// The version of this struct is 0
CFIndex version;
// A pointer to a function that returns the AddressBook
// property this action applies to.
ABActionPropertyCallback property;
// A pointer to a function that returns the AddressBook
// property this action applies to. Only items with labels
// may have actions at this time.
ABActionTitleCallback title;
// A pointer to a function which returns YES if the action
// should be enabled for the passed ABPersonRef and item
// identifier. The item identifier will be NULL for single value
// properties. This field may be NULL. Actions with NULL enabled
// callbacks will always be enabled.
ABActionEnabledCallback enabled;
// A pointer to a function which will be called when the user
// selects this action. It's passed an ABPersonRef and item
// identifier. The item identifier will be NULL for single
// value properties.
ABActionSelectedCallback selected;
} ABActionCallbacks
Для доступа к совместно используемой адресной книге пользователя с помощью интерфейса программирования C необходимо использовать значение, возвращенное ABGetSharedAddressBook
.
ABAddressBookRef addressBook = ABGetSharedAddressBook(); |
Сравните это с соответствующим кодом с помощью интерфейса программирования Objective C, отметив отображение между соответствующим методом и именами функций.
ABAddressBook *addressBook = [ABAddressBook sharedAddressBook]; |
Этот пример от Поиска Адресной книги, Перечисления 1, ищет любого названного Смитом в адресной книге текущего пользователя и возвращает массив результатов.
Перечисление 1 простой поиск, в Objective C
ABAddressBook *AB = [ABAddressBook sharedAddressBook]; |
ABSearchElement *nameIsSmith = |
[ABPerson searchElementForProperty:kABLastNameProperty |
label:nil |
key:nil |
value:@"Smith" |
comparison:kABEqualCaseInsensitive]; |
NSArray *peopleFound = |
[AB recordsMatchingSearchElement:nameIsSmith]; |
Перечисление 2 выполняет тот же поиск с помощью API C. Снова, отметьте отображение между соответствующим методом и именами функций.
Перечисление 2 простой поиск, в C
ABAddressBookRef AB = ABGetSharedAddressBook(); |
ABSearchElementRef nameIsSmith = |
ABPersonCreateSearchElement(kABLastNameProperty, |
NULL, |
NULL, |
CFSTR("Smith"), |
kABEqualCaseInsensitive); |
CFArrayRef peopleFound = |
ABCopyArrayOfMatchingRecords(AB, nameIsSmith); |
Для получения дополнительной информации об использовании API C для платформы Адресной книги, отошлите к Адресной книге C Ссылку Платформы для Mac.