Obtenez de l'iPhone étiquette de numéro de téléphone dans le Carnet d'Adresses
J'ai donc une méthode pour obtenir tous les numéros de téléphone de contact dans le carnet d'adresses de l'iPhone, mais est-il possible d'obtenir le numéro de téléphone de l'étiquette? Par exemple, vous pouvez faire ceci:
Et je serais à la recherche pour modifier ma méthode pour imprimer l'étiquette (comme iPhone/Home/mobile/etc).
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex n = ABAddressBookGetPersonCount(addressBook);
for( int i = 0 ; i < n ; i++ )
{
ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
NSString *firstName = (NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty);
NSLog(@"Name %@", firstName);
ABMultiValueRef *phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
NSString *phoneLabel = @""; //???
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
//CFRelease(phones);
NSString *phoneNumber = (NSString *)phoneNumberRef;
CFRelease(phoneNumberRef);
NSLog(@" - %@ (%@)", phoneNumber, phoneLabel);
[phoneNumber release];
}
}
OriginalL'auteur ingh.am | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Simplement utiliser -
MODIFIER
Veuillez consulter les notes pour cette réponse sur
CFBridgingRelease
et__bridge_transfer
.Vous bienvenue, content que ça a aidé
Au lieu d'utiliser (NSString ) pour porter à la chaîne de l'utilisation (__pont_transfert NSString).
Vous pouvez également utiliser
id CFBridgingRelease( CFTypeRef )
et son complémentCFTypeRef CFBridgingRetain( id )
.Pourquoi ne pas poster le code qui compile>?
OriginalL'auteur shannoga
Ok. Créer localiser le fichier dans votre projet pour lequel la langue que vous souhaitez. Dans ce fichier, définir mobile = 'mpbiel'. Je suis modifiant selon que le code ci-dessus.
En fait, j'avais résolu problème, Nous avons besoin de comparer la marque locale plutôt localisée label -> laissez locLabel : CFStringRef = ABMultiValueCopyLabelAtIndex(téléphones, numberIndex).takeUnretainedValue() CFStringRef; if (String(locLabel) == Chaîne de caractères(kABHomeLabel)){}
OriginalL'auteur abhi
Si vous ajoutez des enregistrements pour le Carnet d'adresses, ces constantes prédéfinies peut être ce que vous voulez,
kABPersonPhoneMobileLabel
,kABPersonPhoneIPhoneLabel
, qui sont définis dans le fichier ABPerson.h.OriginalL'auteur DawnSong
les points suivants devraient vous aider:
OriginalL'auteur reflog