Quais são as marcas ao redor Padrão iPhone Endereço Livro Pessoas Número de Telefone Labels?

StackOverflow https://stackoverflow.com/questions/2404975

  •  18-09-2019
  •  | 
  •  

Pergunta

minha pergunta diz respeito marcação que envolve alguns dos rótulos número de telefone padrão nas entradas Pessoa da lista de contatos no iPhone.

Eu criei uma lista de contatos de entrada do catálogo de endereços do iPhone para uma pessoa, "John Smith" com as seguintes entradas de números de telefone:

  • Mobile (604) 123-4567
  • iPhone (778) 123-4567
  • Home (604) 789-4561
  • Work (604) 456-7891
  • Main (604) 789-1234
  • megafone (234) 567-8990

Note que os cinco primeiros rótulos são rótulos padrão fornecidos pelo aplicativo Contatos e a última etiqueta, "megafone", é uma etiqueta personalizada.

Eu escrevi o seguinte método para recuperar e exibir os rótulos e números de telefone para cada pessoa no catálogo de endereços:

-(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);
}

e aqui é a saída para a entrada de catálogo de endereços que entrei:

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] ---------

Quais são os caracteres de marcação

_$!< and >!$_

circundante mais, senão para o iPhone, das etiquetas padrão para?

Você pode me aponte para onde no "Livro de Endereços Guia de Programação para o iPhone OS" Eu posso encontrar a informação?

Obrigado por sua ajuda.

Foi útil?

Solução

Eu estou correndo para o mesmo problema. Isto é o que eu acho até agora.

A marcação que a sua visão indica ao sistema que este é um rótulo padrão e não uma etiqueta personalizada. Se você executar este código:
NSLog(kABOtherLabel);

você vai ge este resultado:
_$!<Other>!$_

Então esse é o valor armazenado na constante kABOtherLabel (do tipo CFStringRef). Eu acho que o iPhone razão não tem a marcação em torno dele é becuase é um rótulo 'Custom', mas é um originada pela Apple em vez do usuário.

Você pode dar o rótulo de qualquer valor que você gosta, como evidenciado por sua etiqueta megaphone acima. Mas observe que, se você tentar criar um número de telefone (ou endereço de e-mail) com o rótulo 'outro' sem usar a constante kABOtherLabel ou do valor _$!<Other>!$_, o sistema vai pensar que você está criando uma etiqueta personalizada. Como neste exemplo:

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

E se você ir e editar esse endereço entrada do livro sobre o iPhone, ele vai aparecer em uma lista separada de etiquetas personalizadas. (Portanto, haverá 2 opções para 'outro', um nos padrões e um nas etiquetas personalizadas)

Enquanto isso não tenha respondido sua pergunta, espero que ajude.

Outras dicas

Este é basicamente o mesmo no novo CNContact estrutura que substituiu ABAddressBook como o maneira recomendada para contatos punho.

Há seis rótulos padrão que a Apple fornece, que são referenciados com específicas do telefone CNLabelledValue constantes :

CNLabelPhoneNumberiPhone = "iPhone"
CNLabelPhoneNumberMobile = "_$!<Mobile>!$_"
CNLabelPhoneNumberMain = "_$!<Main>!$_"
CNLabelPhoneNumberHomeFax = "_$!<HomeFAX>!$_"
CNLabelPhoneNumberOtherFax = "_$!<OtherFAX>!$_"
CNLabelPhoneNumberPager = "_$!<Pager>!$_"

A inclusão de _$!< e >!$_ cerca de cinco destas constantes é muito provavelmente um marcador que as cordas podem ser localizadas pelo sistema operativo, dada a disponibilidade do método localizedString (forLabel :) . Acredito que a razão estes delimitadores não aparecem ao redor iPhone é porque a Apple não localizar iPhone, que é apresentado como "iPhone" em todas as línguas.

O comportamento sensata seria para esconder estes quando exibindo a corda, que ocorre utilizando localizedString(forLabel:), continuam a armazenar estes delimitadores com a corda se editar a entrada, e mapear qualquer rótulo criado pelo usuário para essas cadeias onde a etiqueta personalizada foi igual ao corpo principal destes, ou seja, mobile, Main, Pager, e assim por diante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top