2011-03-17 2 views
4

Selon le résultat de ABPersonGetSortOrdering(), je veux trier un UILocalizedIndexCollation par prénom ou nom de famille.Passer un @selecteur dynamiquement

Je rencontre des problèmes lors de la commutation du @selector utilisé pour le paramètre collationStringSelector.

Il serait très facile d'écrire tout ce verbeux:

 
NSArray *sortedSubarray; 
if (ABPersonGetSortOrdering() == 0) { 
    sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(fname)]; 
} else { 
    sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(lname)]; 
} 

J'ai essayé quelque chose comme ça avec pas de chance:

 
SEL sorter = ABPersonGetSortOrdering() == 0 ? NSSelectorFromString(@"fname") : NSSelectorFromString(@"lname"); 
sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:@selector(sorter)]; 

J'ai essayé d'autres idées aussi bien , et rien ne semble fonctionner.

Existe-t-il un meilleur moyen de transmettre dynamiquement un nom de sélecteur?

Répondre

7

Vous êtes presque là, il suffit de retirer la partie @selector() d'environ sorter:

sortedSubarray = [collation sortedArrayFromArray:[sections objectAtIndex:section] collationStringSelector:sorter]; 
+1

génial! Je faisais de mon mieux pour ne pas poser la question ... au moins j'étais proche! Merci pour la réponse rapide. – djibouti33

Questions connexes