2009-11-10 6 views
0

Très bien, donc je pense que je le fais de la bonne façon. Je suis nouveau à l'objectif-C, donc je ne suis pas sûr de la syntaxe ... J'ai un ensemble de code que j'ai besoin d'appeler plusieurs fois, à partir de différents fichiers. J'ai donc créé une nouvelle classe avec une méthode que je vais appeler et lui transmettre les valeurs dont elle a besoin. Parce que je passe des valeurs différentes, je les ai mises dans un dictionnaire et j'ai décidé de simplement passer le dictionnaire. Voici le code:Comment passer un dictionnaire à une fonction

NSNumber *testNum = [NSNumber numberWithInt:varMoney]; 


    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; 
    [dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"]; 
    [dictionary setObject:@"Number two!" forKey:@"2"]; 
    [dictionary setObject:testNum forKey:@"3"]; 

Ce code crée une variable de test, puis le place dans le dictionnaire "dictionnaire". Tout cela fonctionne, j'ai mon joli petit dictionnaire. Cependant, maintenant j'ai besoin de créer la classe et c'est la méthode qui va recevoir le dictionnaire, et faire quelque chose avec.

Ceci est mon fichier d'en-tête de classe:

#import <UIKit/UIKit.h> 


@interface EndOfTurnObjC : UIView { 

} 

@end 

Et ceci est le fichier de mise en œuvre:

#import "EndOfTurnObjC.h" 


@implementation EndOfTurnObjC 


- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     // Initialization code 
    } 
    return self; 
} 



- (void)dealloc { 
    [super dealloc]; 
} 


@end 

Je n'ai pas créé tout le code réel, parce que je ne suis pas sûr faire le passing. J'ai besoin de créer une fonction (méthode?) Dans la classe qui prendra un dictionnaire a un paramètre, puis retourner le dictionnaire.

Je n'ai également aucune idée de comment appeler une telle fonction parce qu'elle est dans la classe. Donc, les questions sont: 1: Comment définir la méthode dans la classe pour accepter le dictionnaire en tant que paramètre (et puis peut-être un exemple de code pour extraire l'un des objets dans un dictionnaire, donc je peux être sûr que cela fonctionne 2

2: Comment retourner le dictionnaire à la fin de la méthode?

3: Comment appeler cette méthode, dans la classe, d'une autre classe? (Je sais que cela implique de faire un objet de classe et d'appeler la méthode de l'objet ... Je pense, mais je ne suis pas sûr de la syntaxe.)

Veuillez inclure le code relavent pour les 3 fichiers (en-tête, la mise en œuvre, et l'autre classe que j'appelle). Merci beaucoup, j'ai travaillé sur ce problème particulier depuis un moment maintenant.

+1

"S'il vous plaît inclure le code relavent pour les 3 fichiers" - Je ne suis pas un "google it" typique ou "pas de travail" ou "rtfm" personne, mais vous demandez beaucoup de nous sans vraiment fournir preuve d'effort. Ces choses ne sont pas si compliquées, et nous serions heureux de vous aider, mais je suis sûr que beaucoup d'entre nous aimeraient au moins voir vos tentatives en premier. –

+0

Je pourrais vous donner le code source de mon application, mais ce n'est pas tout à fait l'idée. J'ai beaucoup travaillé sur mon programme, mais je ne trouve aucune documentation à ce sujet. Je ne veux pas que les gens travaillent pour moi non plus, mais après avoir travaillé sur ce problème pendant deux semaines, j'ai atteint la fin de mes capacités. –

Répondre

1

Dans l'en-tête :

-(NSMutableDictionary *) doSomethingWithDictionary:(NSMutableDictionary *) aDict; 

dans la mise en œuvre:

-(NSMutableDictionary *) doSomethingWithDictionary:(NSMutableDictionary *) aDict{ 
    //do something with the dictionary 
    return aDict; 
} 

appeler la méthode:

NSMutableDictionary *returnDict=[EndOfTurnObjC doSomethingWithDictionary:dictionary]; 

Notez que comme une question de bonne conception que vous ne voulez pas passer un dictionnaire mutable autour comme un jeton. C'est demander des ennuis. Passez plutôt des dictionnaires statiques et récupérez un autre dictionnaire.

Vous ne devriez également pas transmettre de données à un UIView. Au lieu de cela, votre UIViewController doit traiter les données, puis remplir les éléments de l'interface utilisateur de la vue selon les besoins.

4

La référence The Objective-C Programming Language d'Apple est une bonne référence pour la syntaxe Objective-C. Ce que vous voulez est juste une méthode normale qui prend un NSDictionary en paramètre. Ainsi que cela est donné dans ce document:

Un message avec un seul argument appose un signe deux-points (:) au nom du sélecteur et place l'argument juste après le signe deux-points.Cette construction est appelée un mot-clé; un mot-clé se termine par deux points, et un argument suit le côlon, comme le montre cet exemple:

[myRectangle setWidth:20.0]; 

Ainsi, un appel de méthode pour passer dictionary ressemblerait à ceci:

[someObject setAttributes:dictionary]; 
0

si vous voulez juste faire des choses à votre dictionnaire u juste

- (void) changeMyDictionary: (NSMutableDictionary *) dictionary_

{

[dictionary_ doStuff]; 
    .... 
    ... 

}

pas besoin pour retourner le dictionnaire.

Questions connexes