Recherche exemples de code pour ABAddressBook framework en C

laurrislaurris Membre
12:16 modifié dans Dev. iOS, watchOS, tvOS #1
Comme l'ont déjà  remarqué certains ici, le SDK iPhone (beta 5) inclut le framework ABAddressBook en C mais pas en objective-c.
Pour ceux qui n'ont pas l'habitude de manier les api carbon, c'est assez fastidieux.

Aussi, je souhaiterais savoir si vous savez où trouver des exemples de code  ABAddressBook en C. En ce qui me concerne, j'essaie de récupérer une adresse à  partir d'un record ... et je trouve pas dans la doc.
Merci pour vos lumières.

Réponses

  • laurrislaurris Membre
    12:16 modifié #2
    [self réponse] =

    J'ai trouvé un truc qui a l'air de marcher:
    <br />	ABAddressBookRef addressBook = ABAddressBookCreate();	<br />	NSArray *allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);<br />	<br />	int i;<br />	for (i = 0; i &lt; [allPeople count]; i++) {<br />		ABRecordRef record = [allPeople objectAtIndex:i];<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ABMutableMultiValueRef multiValue = ABRecordCopyValue(record, kABPersonAddressProperty);<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CFDictionaryRef dict = ABMultiValueCopyValueAtIndex(multiValue, 0);<br />		CFStringRef street = CFDictionaryGetValue(dict, kABPersonAddressStreetKey);<br />		CFStringRef city = CFDictionaryGetValue(dict, kABPersonAddressCityKey);<br />		CFStringRef country = CFDictionaryGetValue(dict, kABPersonAddressCountryKey);		<br />		CFRelease(dict);<br />		<br />		NSString *syntheticAddress = [NSString stringWithFormat:@&quot;%@, %@, %@&quot;,street,city,country];<br />	}<br /><br />
    


    ... mais qu'est-ce que c'est casse bonbon les api en C ! Merci encore Brad Cox d'avoir inventé l'Objective-c.
  • schlumschlum Membre
    12:16 modifié #3
    Ben, vaut mieux savoir utiliser, parce que souvent elles ont plus en avance / plus puissantes que les API Cocoa équivalentes  :P
    (certaines API Cocoa ne sont que des wrappers limités autour des API C)
Connectez-vous ou Inscrivez-vous pour répondre.