Valeur null
Bonjour,
Je récupère des contacts du carnet d'adresse.
Juste après, dans la ligne suivante, il est impossible d'utiliser cet variable avec n'importe qu'elle opération.
C'est dû surement au faite que ce contact n'a pas d'Email.
Je veux tester si cette valeur est null, ça marche pas (même ne NSLog marche pas)
J'ai essayé != nil et !=NULL
tj pas
la même erreur :
[NSCFType length]: unrecognized selector sent to instance
Qlq1 a une idée , Merci.
Je récupère des contacts du carnet d'adresse.
<br />NSString *pEmail = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty) ;<br />
Juste après, dans la ligne suivante, il est impossible d'utiliser cet variable avec n'importe qu'elle opération.
C'est dû surement au faite que ce contact n'a pas d'Email.
Je veux tester si cette valeur est null, ça marche pas (même ne NSLog marche pas)
J'ai essayé != nil et !=NULL
tj pas
la même erreur :
[NSCFType length]: unrecognized selector sent to instance
Qlq1 a une idée , Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ABRecordCopyValue
Returns the value of a record property.
CFTypeRef ABRecordCopyValue (
ABRecordRef record,
ABPropertyID property
);
Parameters
record
The record containing the property in question.
property
The property of record whose value to return. See properties in “Constants†and “Constant
kABPersonEmailProperty
Email address. Type: kABMultiStringPropertyType.
kABMultiStringPropertyType
Multistring property. Returned as an ABMultiValueIdentifier of CFStringRef objects.
essaie de caster en NSArray, et de faire un NSLog dessus
NSArray *pEmails = (NSArray *)ABRecordCopyValue(person, kABPersonEmailProperty) ;
NSLog(@%@",pEmails);
Quoiqu'à priori ABMultiValueIdentifier est un int32_t
<NSCFType: 0x10a9820> !
NSString *pEmail= (NSString*)[(NSArray *)ABRecordCopyValue(person, kABPersonEmailProperty) objectAtIndex:0];
NSLog(pEmail);
(remarque: tu permets que je déplace ton post vers la rubrique Frameworks spécialisés ? )
ça me retourne ça:
[NSCFType objectAtIndex:]: unrecognized selector sent to instance 0x10ab740
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFType objectAtIndex:]: unrecognized selector sent to instance 0x10ab740'
Oui bien sûre. Juste on attend stp que je trouve la bonne réponse.
Bon je n'ai plus le temps là , essaie des fonctions C comme CFStringGetLength(), CFStringGetCharacters() ... qui sont décrites dans la doc
Sinon, pourquoi utiliser la version C du framework AddressBook ?
[tt]NSLog(@premier email : %@" , ABMultiValueCopyValueAtIndex(ABRecordCopyValue(person, kABPersonEmailProperty),0) );[/tt]
Sinon dans la doc sur ABMuliValue Reference, on trouve ABMultiValueCopyArrayOfAllValues qui renvoie un CFArrayRef (toll-free bridged donc castable en NSArray*)
Faut penser à chercher dans la doc :P
[EDIT]J'avais oublié de valider mon message du coup Baarde a posté avant moi, mais moi j'ai trouvé ABMultiValueCopyArrayOfAllValues qui est tout fait
Du coup aussi pour répondre à ta question Baarde : le framework Cocoa AddressBook accessible en Objective-C... n'existe que pour MacOSX. Or là on est sur iPhone, où il n'a pas été porté (je me demande bien pourquoi, c'est pourtant pas le genre de classes lourdes qui ralentirait l'iPhone et justifierait sa suppression). D'où l'obligation de passer par l'API C.
Ca fonctionne maintenant.
@+