Мой вопрос касается разметки, которая окружает некоторые маркировки номера телефона по умолчанию в записях Человека Списка контактов на iPhone.
Я создал запись адресной книги списка контактов iPhone для человека, "John Smith" со следующими записями номера телефона:
Обратите внимание, что первые пять маркировок являются маркировками по умолчанию, обеспеченными приложением Контактов, и последняя маркировка, "мегафон", является пользовательской маркировкой.
Я записал следующий метод, чтобы получить и отобразить маркировки и номера телефона для каждого человека в адресной книге:
-(void)displayPhoneNumbersForAddressBook {
ABAddressBookRef book = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(book);
ABRecordRef record = CFArrayGetValueAtIndex(people, 0);
ABMultiValueRef multi = ABRecordCopyValue(record, kABPersonPhoneProperty);
NSLog(@"---------" );
NSLog(@"displayPhoneNumbersForAddressBook" );
CFStringRef label, phone;
for (CFIndex i = 0; i < ABMultiValueGetCount(multi); ++i) {
label = ABMultiValueCopyLabelAtIndex(multi, i);
phone = ABMultiValueCopyValueAtIndex(multi, i);
NSLog(@"label: \"%@\" number: \"%@\"", (NSString*)label, (NSString*)phone);
CFRelease(label);
CFRelease(phone);
}
NSLog(@"---------" );
CFRelease(multi);
CFRelease(people);
CFRelease(book);
}
и вот вывод для записи адресной книги, которую я ввел:
2010-03-08 13:24:28.789 test2m[2479:207] ---------
2010-03-08 13:24:28.789 test2m[2479:207] displayPhoneNumbersForAddressBook
2010-03-08 13:24:28.790 test2m[2479:207] label: "_$!<Mobile>!$_" number: "(604) 123-4567"
2010-03-08 13:24:28.790 test2m[2479:207] label: "iPhone" number: "(778) 123-4567"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Home>!$_" number: "(604) 789-4561"
2010-03-08 13:24:28.791 test2m[2479:207] label: "_$!<Work>!$_" number: "(604) 456-7891"
2010-03-08 13:24:28.792 test2m[2479:207] label: "_$!<Main>!$_" number: "(604) 789-1234"
2010-03-08 13:24:28.792 test2m[2479:207] label: "megaphone" number: "(234) 567-8990"
2010-03-08 13:24:28.793 test2m[2479:207] ---------
Что является символами разметки
_$!< and >!$_
окружение больше всего, сохраните для iPhone маркировок по умолчанию для?
Можно ли указать на меня туда, где в "Руководстве по программированию адресной книги для iPhone OS" я могу найти информацию?
Спасибо за помощь.
Я столкнулся с той же проблемой. Вот что я думаю на данный момент.
Разметка, которую вы видите, указывает системе, что это метка по умолчанию, а не пользовательская метка. Если вы выполните этот код:
NSLog(kABOtherLabel);
то получите такой результат:
_$!
Это значение хранится в константе kABOtherLabel
(типа CFStringRef). Я думаю, что причина, по которой iPhone
не имеет разметки вокруг него, заключается в том, что это "пользовательская" метка, но созданная Apple, а не пользователем.
Вы можете придать метке любое значение, как показано на примере вашей мегафонной
метки выше. Но обратите внимание, что если вы попытаетесь создать номер телефона (или адрес электронной почты) с меткой 'other' без использования константы kABOtherLabel
или ее значения _$!
, система решит, что вы создаете пользовательскую метку. Как в этом примере:
ABMultiValueAddValueAndLabel(email, @"nospam@notarealdomain.com", @"other", NULL);
И если вы пойдете и отредактируете эту запись Адресной книги на iPhone, она появится в отдельном списке пользовательских меток. (Таким образом, там будет 2 варианта для 'other', один в стандартных и один в пользовательских ярлыках)
Хотя это не ответило на ваш вопрос, я надеюсь, что это поможет.