Каковы Теги Вокруг Значения по умолчанию iPhone Address Book People Phone Number Labels?

Мой вопрос касается разметки, которая окружает некоторые маркировки номера телефона по умолчанию в записях Человека Списка контактов на iPhone.

Я создал запись адресной книги списка контактов iPhone для человека, "John Smith" со следующими записями номера телефона:

  • Мобильный телефон (604) 123-4567
  • iPhone (778) 123-4567
  • Домой (604) 789-4561
  • Работа (604) 456-7891
  • Основной (604) 789-1234
  • мегафон (234) 567-8990

Обратите внимание, что первые пять маркировок являются маркировками по умолчанию, обеспеченными приложением Контактов, и последняя маркировка, "мегафон", является пользовательской маркировкой.

Я записал следующий метод, чтобы получить и отобразить маркировки и номера телефона для каждого человека в адресной книге:

-(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" я могу найти информацию?

Спасибо за помощь.

8
задан rnistuk 8 March 2010 в 21:41
поделиться

1 ответ

Я столкнулся с той же проблемой. Вот что я думаю на данный момент.

Разметка, которую вы видите, указывает системе, что это метка по умолчанию, а не пользовательская метка. Если вы выполните этот код:
NSLog(kABOtherLabel);

то получите такой результат:
_$!!$_

Это значение хранится в константе kABOtherLabel (типа CFStringRef). Я думаю, что причина, по которой iPhone не имеет разметки вокруг него, заключается в том, что это "пользовательская" метка, но созданная Apple, а не пользователем.

Вы можете придать метке любое значение, как показано на примере вашей мегафонной метки выше. Но обратите внимание, что если вы попытаетесь создать номер телефона (или адрес электронной почты) с меткой 'other' без использования константы kABOtherLabel или ее значения _$!!$_, система решит, что вы создаете пользовательскую метку. Как в этом примере:

ABMultiValueAddValueAndLabel(email, @"nospam@notarealdomain.com", @"other", NULL);

И если вы пойдете и отредактируете эту запись Адресной книги на iPhone, она появится в отдельном списке пользовательских меток. (Таким образом, там будет 2 варианта для 'other', один в стандартных и один в пользовательских ярлыках)

Хотя это не ответило на ваш вопрос, я надеюсь, что это поможет.

7
ответ дан 5 December 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: