¿Cuáles son las etiquetas alrededor de etiquetas iPhone dirección predeterminada del libro Las personas Número de teléfono?

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

  •  18-09-2019
  •  | 
  •  

Pregunta

Mi pregunta se refiere marcado que rodea algunas de las etiquetas de número de teléfono predeterminado en las entradas de personas de la lista de contactos en el iPhone.

He creado una lista de direcciones de entrada de la libreta de contactos de iPhone para una persona, "John Smith", con las siguientes entradas de números de teléfono:

  • Móvil (604) 123-4567
  • iPhone (778) 123-4567
  • Inicio (604) 789-4561
  • Trabajo (604) 456-7891
  • principal (604) 789-1234
  • megáfono (234) 567-8990

Tenga en cuenta que los primeros cinco etiquetas son etiquetas por defecto proporcionados por la aplicación Contactos y la última etiqueta, "megáfono", es una etiqueta personalizada.

Me escribió el siguiente método para recuperar y mostrar las etiquetas y números de teléfono para cada persona en la libreta de direcciones:

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

Y aquí está la salida para la entrada de libreta de direcciones que entré:

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

¿Cuáles son los caracteres de marcado

_$!< and >!$_

que rodea la mayor parte, con excepción de iPhone, de las etiquetas predeterminadas para?

¿Me puede indicar en qué parte del "Libro de direcciones Guía de programación para iPhone OS" No puedo encontrar la información?

Gracias por su ayuda.

¿Fue útil?

Solución

Estoy corriendo con el mismo problema. Esto es lo que pienso hasta ahora.

El marcado que su visión indica al sistema que se trata de una etiqueta por defecto y no una etiqueta personalizada. Si ejecuta este código:
NSLog(kABOtherLabel);

Vas a ge este resultado:
_$!<Other>!$_

Así que es el valor almacenado en la constante kABOtherLabel (de tipo CFStringRef). Creo que la razón iPhone no tiene el margen de beneficio en torno a ella está debido que es una etiqueta 'personalizado', pero es uno originado por Apple en lugar del usuario.

Se puede dar la etiqueta de cualquier valor que te gusta, como lo demuestra su etiqueta megaphone anteriormente. Pero nótese que si se intenta y crear un número de teléfono (o dirección de correo electrónico) con la etiqueta 'otro' sin utilizar el kABOtherLabel constante o su valor _$!<Other>!$_, el sistema va a pensar que va a crear una etiqueta personalizada. Como en este ejemplo:

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

Y si vas y editar esa entrada de la agenda en el iPhone, que se mostrará en una lista separada de etiquetas personalizadas. (Así que habrá 2 opciones para 'otro', uno de los valores por defecto y una en las etiquetas personalizadas)

Si bien esto no ha respondido a su pregunta, espero que ayude.

Otros consejos

Este es básicamente el mismo en el nuevo rel="nofollow CNContact marco que sustituye ABAddressBook como el forma recomendada para manejar los contactos.

Hay seis etiquetas predeterminadas que Apple ofrece, que son referenciadas con específico del teléfono CNLabelledValue constantes :

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

La inclusión de _$!< y >!$_ alrededor de cinco de estas constantes es más probable un marcador que las cuerdas pueden ser localizados por el sistema operativo, dada la disponibilidad del método localizedString (forLabel :) . Creo que la razón de estos delimitadores no aparecen alrededor de iPhone de Apple se debe a que no se localiza iPhone, que se muestra como "iPhone" en todos los idiomas.

El comportamiento sensato sería para ocultar estos cuando se muestra la cadena, que se produce mediante localizedString(forLabel:), continuar almacenando estos delimitadores con la cadena si editar la entrada, y el mapa de cualquier etiqueta creada por el usuario a estas cadenas, donde la etiqueta personalizada era igual al cuerpo principal de éstos, es decir, móvil, principal, Buscapersonas, y así sucesivamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top