2010-11-25 8 views
0

J'ai une énumération dit sexe, maintenant je veux l'associer à des valeurs de chaîne à utiliser dans la vue à l'intérieur d'une vue sélecteur. C'est un cadre cacao-touch et objectif-c comme langage. Donc, je ne connais pas un moyen de définir la source de données de la vue du sélecteur comme l'énumération, comme cela aurait pu être fait dans d'autres frameworks. Donc, on m'a dit que je devais faire un tableau de valeurs enum. et puis j'ai essayé d'ajouter thos dans un NSMutableDictionary avec leurs valeurs de chaîne respectives. donc j'ai fini avecobjective-c comment créer un tableau d'énumération avec ses valeurs de chaîne en tant que clés?

NSArray* genderKeys = [NSArray arrayWithObjects:@"Male",@"Female",nil] ; 
NSArray* genderValues = [NSArray arrayWithObjects:[NSNumber numberWithInt:male],[NSNumber numberWithInt:female],nil]; 

for(int i =0;i<[genderKeys count];i++) 
    [_genderDictionary setValue:[genderValues objectAtIndex:i] forKey:[genderKeys objectAtIndex:i]]; 

et il ne fonctionne pas dire ce n'est pas une clé valide, et je l'ai lu l'article clé de codage et je sais maintenant ce qui est essentiel et ce qui est keypath, mais comment puis-je résoudre cette. Ca ruine ma vie, S'il te plait aide.

Désolé les gars, j'utilisais NSDictionary pour _genderDictionary.But j'avais dans mon esprit que c'était nsmutable. Merci à tous.

Répondre

0

Cela fonctionne pour moi. En cours d'exécution (votre code, avec la première ligne ajoutée pour qu'il puisse être compilé) semble fonctionner correctement.

NSMutableDictionary *_genderDictionary = [NSMutableDictionary dictionary]; 
NSArray* genderKeys = [NSArray arrayWithObjects:@"Male",@"Female",nil] ; 
NSArray* genderValues = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],nil]; 

for(int i =0;i<[genderKeys count];i++) 
    [_genderDictionary setValue:[genderValues objectAtIndex:i] forKey:[genderKeys objectAtIndex:i]]; 

NSLog() - ING _genderDictionary émet ce

{ 
    Female = 2; 
    Male = 1; 
} 

modifier: relisant votre question, me fait penser à ce que vous recherchez est les méthodes déléguées de UIPickerView ... –pickerView:titleForRow:forComponent: est en œuvre où vous définissez le texte qui apparaît dans le sélecteur. Si vous avez un NSArray de genres, vous feriez quelque chose comme return [_genderArray objectAtIndex:row]; De cette façon, vous n'avez pas besoin d'embêter avec un dictionnaire et des clés.

modifier 2: la source de données d'un sélecteur ne peut pas être un NSArray ou un NSDictionary directement. Il doit s'agir d'un objet qui implémente le protocole de source de données/délégué de UIPickerView (ce que je suppose que vous pourriez faire avec une sous-classe de NSArray, mais ce serait cah-ray-zay!).

0

Si je vous ai bien compris, vous essayez de créer un dictionnaire pré-rempli. Vous pouvez utiliser [NSDictionary dictionaryWithObjectsAndKeys:] pour cela.

[NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithUnsignedInt:0], @"Male", 
    [NSNumberWithUnsignedInt:1], @"Female", nil] 
2

Faites attention en utilisant le texte de l'interface utilisateur comme clés dans votre base de données. Quel montant quand vous devez localiser votre application en français, chinois, arabe etc?

+1

Les clés de dictionnaire ne devraient jamais vraiment être quelque chose qui est exposé à l'utilisateur. Pas à cause du problème de la langue, mais plutôt parce que c'est grave. La clé est ce que vous utilisez pour récupérer les données, pas les données elles-mêmes. –

Questions connexes