Quali sono i Tag Circa iPhone Rubrica predefinita persone Numero di telefono etichette?

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

  •  18-09-2019
  •  | 
  •  

Domanda

La mia domanda riguarda il markup che circonda alcune delle etichette di telefono predefiniti numerici nelle voci persona del Elenco contatti su iPhone.

Ho creato un indirizzo entry list rubrica iPhone per una persona, "John Smith" con le seguenti voci numero di telefono:

  • mobile (604) 123-4567
  • iPhone (778) 123-4567
  • Inizio (604) 789-4561
  • Lavoro (604) 456-7891
  • principale (604) 789-1234
  • megafono (234) 567-8990

Si noti che i primi cinque etichette sono etichette predefinite fornite dall'applicazione Contatti e l'ultima etichetta, "megafono", è un'etichetta personalizzata.

ho scritto il seguente metodo per recuperare e visualizzare le etichette ei numeri di telefono per ogni persona nella rubrica:

-(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 qui è l'uscita per la voce della rubrica che ho inserito:

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

Quali sono i caratteri di markup

_$!< and >!$_

che circonda la maggior parte, salvo che per iPhone, delle etichette predefinite per?

Mi può indicare in quale parte del "Libro Guida alla programmazione Indirizzo per iPhone OS" posso trovare le informazioni?

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Io corro lo stesso problema. Questo è quello che penso finora.

Il markup che il vostro vedere indica al sistema che si tratta di un'etichetta predefinita e non un'etichetta personalizzata. Se si esegue questo codice:
NSLog(kABOtherLabel);

Potrai ge questo risultato:
_$!<Other>!$_

In modo che sia il valore memorizzato nella costante kABOtherLabel (di tipo CFStringRef). Penso che la ragione per iPhone non ha il markup intorno è becuase è una label 'personalizzate', ma è uno originata da Apple invece dell'utente.

Si può dare l'etichetta di qualsiasi valore che ti piace, come dimostra l'etichetta megaphone sopra. Ma si noti che se si tenta di creare un numero di telefono (o l'indirizzo e-mail), con l'etichetta di 'altri' senza utilizzare il kABOtherLabel costante o il suo valore _$!<Other>!$_, il sistema penserà che si sta creando un'etichetta personalizzata. Come in questo esempio:

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

E se si va e modificare quella voce della Rubrica su iPhone, verrà visualizzato in un elenco separato di etichette personalizzate. (Quindi ci saranno 2 scelte per 'altri', uno nelle impostazioni predefinite e uno nelle etichette personalizzate)

Anche se questo non ha risposto alla tua domanda, spero che aiuta.

Altri suggerimenti

Questo è in gran parte la stessa nel nuovo rel="nofollow CNContact quadro che ha sostituito ABAddressBook come il metodo consigliato per gestire i contatti.

Ci sono sei etichette predefinite fornite da Apple, che si fa riferimento con -telefono specifico CNLabelledValue costanti :

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

L'inclusione di _$!< e >!$_ circa cinque di queste costanti è più probabile un indicatore che le stringhe possono essere localizzati dal sistema operativo, data la disponibilità del metodo LocalizedString (forLabel :) . Credo che la ragione per cui questi delimitatori non appaiono intorno iPhone è perché Apple non localizzata iPhone, che viene visualizzato come "iPhone" in tutte le lingue.

Il comportamento ragionevole sia quello di nascondere questi quando la visualizzazione della stringa, che si verifica utilizzando localizedString(forLabel:), continuerà a memorizzare questi delimitatori con la stringa, se si modifica la voce, e mappare qualsiasi etichetta creata dall'utente a queste stringhe in cui l'etichetta personalizzata è stato pari al corpo principale di questi, vale a dire, mobile, principale, Pager, e così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top