Methode avec nombre de parametres variable

Bonsoir,



je dois appeler une methode avec un certains nombre de parametres qui dependent d'un NSArray.



Si je prends par exemple un exemple Apple :
<br />
NSPredicate *predicate = [NSPredicate   predicateWithFormat:@&quot;(lastName like[cd] %@) AND (birthday &gt; %@)&quot;, lastNameSearchString, birthdaySearchDate];<br />




que je vais reformuler par :
<br />
NSPredicate *predicate = [NSPredicate  predicateWithFormat:chaine1, parametres1, parametre2];<br />




ici on a deux parametres a passer.

Ou ca commence a se corser pour moi, c'est que je dois recevoir un NSArray ou le premier element est la chaine1 et les autres sont les parametres et ce tableau a une taille variable, je veux dire par la qu'il peux y avoir qu'un parametre, comme deux voir beaucoup plus.

Recuperer les parametres dans la NSArray ca c'est pas un soucis, le probleme se pose au niveau de la methode de predicate.

Imaginez une methode comme cela :
<br />
-(void) rowsFilteredUsingPredicate:(id)args<br />
{<br />
    NSPredicate *predicate = [NSPredicate predicateWithFormat:[args objectAtIndex:0], [args objectAtIndex:1],[args objectAtIndex:2]];<br />
}<br />


ca va pour deux parametres, comment faire quelque quelque chose qui puisse marcher quelque soit la taille du tableau args ?



Merci

Réponses

  • zoczoc Membre
    avril 2012 modifié #2
    predicateWithFormat:argumentArray: ? (il faudra juste extraire le format et créer un NSArray temporaire contenant tous les éléments sauf le premier)



    Ou alors (moins adapté à  ton cas, mais exemple d'une méthode prenant un nombre variable d'arguments):


    <br />
    -(void) rowsFilteredUsingPredicateWithFormat:(NSString*)format, ...<br />
    {<br />
    	va_list ap;<br />
    	va_start(ap, format);<br />
    <br />
    	NSPredicate *predicate = [NSPredicate predicateWithFormat: format arguments: ap];<br />
    	va_end(ap);<br />
    }<br />
    
  • adsads Membre
    Merci Zoc,

    desole de ma reponse tardive mais le site ma pas envoye de notification de reponse :-(

    Oui effectivement avec l'argumentArray, c'est ce qui me convient.

    Merci encore
Connectez-vous ou Inscrivez-vous pour répondre.