2010-08-20 9 views
1

J'ai pris (avec la permission des auteurs sur le site) une classe wrapper pour écrire des requêtes d'extraction dans ma pile de données de base. Le gars qui l'a écrit dit qu'il a des "paramètres optionnels" et je me demandais ce que cela signifiait.paramètres optionnels

Anywho, les méthodes statiques sont écrits en tant que telle ...

+(NSMutableArray *) searchObjectsFromContext 
    : (NSString*) entityName 
    : (NSPredicate*) predicate 
    : (NSString*) sortKey 
    : (BOOL) sortAscending 
    : (NSManagedObjectContext *) managedObjectContext 

J'ai été en cours d'exécution et le passage « néant » dans les params non nécessaires. Est-ce la bonne chose à faire?

De même, y a-t-il une signification au fait qu'il n'y a pas de texte de méthode supplémentaire entre les deux-points?

Merci pour toute aide

Oliver

Répondre

3

Il est impossible de dire si passer 'nil' est la bonne chose à faire sans lire la documentation ou examiner le code source. C'est probablement correct, cependant, comme c'est le comportement standard dans la plupart des classes. Créer des paramètres de méthode sans texte associé (comme vous le voyez dans votre code posté) est parfaitement légal ... mais c'est aussi parfaitement moche et vous perdez tous les bénéfices de la verbosité d'Obj-C. Il n'y a absolument aucune raison d'écrire du code comme ça, cela ne sert qu'à rendre vos cours plus difficiles à utiliser.

+0

Cool! Merci! Je pensais que c'était juste de la paresse, mais je ne savais pas s'il y avait une signification que je ne connaissais pas. – Fogmeister

+0

Je ne suis pas d'accord avec @kubi plus. Au fur et à mesure que vous progressez dans Objective-C, vous trouverez des méthodes comme celle-là dans l'offensive droite. En outre, cette méthode ne vous apporte vraiment pas une quantité terrible. Et enfin, le fait qu'il renvoie un 'NSMutableArray' à partir d'un Core Data fetch est juste ... *** très très *** faux. De quel site est-ce que cela vient? J'aimerais regarder la source originale. –

+0

Je suis d'accord que quiconque a initialement écrit cette méthode a des habitudes très dangereuses. Je me méfierais de l'utilisation de code que je ne comprenais pas et qui venait de ce site. – TechZen

0

Les paramètres optionnels sont disponibles en VB (et quelques autres langues), mais pas C#. C# vous oblige à surcharger les fonctions.

Vous pouvez transmettre des valeurs "par défaut" aux paramètres facultatifs si vous le souhaitez. Tant que vous savez comment la fonction répondra, je ne vois pas comment cela va nuire à quoi que ce soit.

EDIT: Je viens de lire votre balise iphone .... Désolé! Je ne sais pas à quel point ma réponse est pertinente à cet égard

+0

Merci, Les fonctions à l'intérieur de l'encapsuleur traitent les différentes variables selon qu'elles ont une valeur que je n'étais pas sûr du terme "variables optionnelles". Je suppose qu'il veut juste dire que vous pouvez passer nul au lieu de valeurs réelles. Merci! – Fogmeister

+0

Ne vous inquiétez pas, je pense que c'est la même réponse malgré tout. Je devrais avoir mis le fait que c'est pour iPhone dans le titre/post. Merci – Fogmeister

Questions connexes