Самый быстрый способ получить значение даты с пользовательской меткой? - PullRequest
0 голосов
/ 09 ноября 2009

В Контактах я установил поле даты с пользовательской меткой (при редактировании контакта вы выбираете Добавить поле-> Дата -> Годовщина -> Добавить пользовательскую метку).

Это хранится в свойстве ABMultiValue идентификатора «kABPersonDateProperty» с меткой (например) «Следующая встреча».

В API ABMultiValue есть функции, позволяющие сообщать мне имя метки в индексе, читать значение в индексе и конвертировать между ID / Index.

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

Я понимаю, что есть функция для получения индекса по идентификатору свойства, но это означает, что в какой-то момент ранее мне придется обнаружить propertyID, просматривая все записи, пытаясь найти его с помощью «следующего назначения». поле для получения его propertyid.

Я хочу просмотреть дату в виде таблицы и отсортировать ее, поэтому мне нужно получить значение максимально эффективно. У кого-нибудь есть способ сделать это быстро, желательно с примером кода или ссылкой для получения дополнительной информации?

1 Ответ

0 голосов
/ 10 ноября 2009

Подход, который вы описываете, верен. Возможно, вы захотите сделать что-то похожее на пример кода Apple для многозначных свойств из Руководства по программированию адресной книги для iPhone OS:

CFStringRef phoneNumber, phoneNumberLabel;
multi = ABRecordCopyValue(aRecord, kABPersonPhoneProperty);

for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++) {
    phoneNumberLabel = ABMultiValueCopyLabelAtIndex(multi, i);
    phoneNumber      = ABMultiValueCopyValueAtIndex(multi, i);

    /* ... do something with phoneNumberLabel and phoneNumber ... */

    CFRelease(phoneNumberLabel);
    CFRelease(phoneNumber);
}

CFRelease(aRecord);
CFRelease(multi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...