Bonsoir !
Je poste ici car apparemment - à ma grande surprise - il ne semble pas y avoir de forums dédiés au développement Mac, en particulier sous Cocoa ![:ccool:](https://www.developpez.net/forums/images/smilies/ccool.gif)
Je suis en train de prototyper quelques fonctionnalités en vue de développer une appli dans laquelle je serai en particulier amené à interagir avec le carnet d'adresses du Mac.
J'ai donc ajouté un ABPeoplePickerView dans ma fenêtre et je capture les drags effectué depuis cette vue sur ma feuille. L'objectif est de construire des ABPerson* et ABGroup* en fonction des contacts/groupes dropés sur la fenêtre, j'ai donc développé le code suivant pour gérer le drop (c'est du test...):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| - (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
if ([[pboard types] containsObject:@"ABTableRowsPboardType"]) {
NSArray *peoplesIds = [pboard propertyListForType:@"ABTableRowsPboardType"];
for (NSString *peopleId in peoplesIds) {
// create and display each person from address book
ABRecord *record = [[ABAddressBook sharedAddressBook] recordForUniqueId:peopleId];
if ([record isKindOfClass:[ABPerson class]]) {
NSLog(@"Dropped person named: %@ %@", [record valueForProperty:@"firstName"], [record valueForProperty:@"lastName"]);
} else if ([record isKindOfClass:[ABGroup class]]) {
ABGroup *group = record;
NSLog(@"Dropped group with %d persons in it", [[group members] count]);
}
}
}
return YES;
} |
Mon code crash à la ligne:
ABRecord *record = [[ABAddressBook sharedAddressBook] recordForUniqueId:peopleId];
Avec l'erreur:
2009-07-01 20:42:59.144 Meemin[62467:813] *** -[NSCFNumber length]: unrecognized selector sent to instance 0x80001a380
Sans trop que je ne sache pourquoi... Pour info, la variable peopleId est correcte, voici ce que j'ai dans le debugger la concernant:
1 2 3
| (gdb) po peopleId
6
Current language: auto; currently objective-c |
Avec-vous déjà réussi à implémenter avec succès une telle approche ?
Merci d'avance pour toute aide que vous pourrez m'apporter !
Partager