J'écris une "fabrique" contextuelle qui maintiendra un dictionnaire d'objets convertisseurs/agissant qui héritent d'une classe de Convertisseur. Cette classe a une méthode:Utiliser la classe comme clé dans NSDictionary
- (Class)classResponsibility
Ou quelque chose de semblable, telle qu'une classe StringConverter mettrait en œuvre la méthode que:
- (Class)classResponsibility {
return [NSString class];
}
Ensuite, pour stocker ce convertisseur dans le dictionnaire, je l'avais espéré à faire quelque chose comme:
[converters setValue:stringConverter forKey:[stringConverter classResponsibility]];
Mais le compilateur se plaint que le type "classe" est un type de paramètre non valide pour l'argument 2 de la setValue: forKey: méthode. Je voulais éviter de définir la clé comme le nom de classe ("NSString"), mais si c'est la meilleure solution que je vais aller avec.
Explication fantastique! –
à partir de XCode 4.5, vous devez d'abord le lancer pour ne pas recevoir d'avertissement: [dictionary setObject: object forKey: (id) someClass]; voir cette réponse http://stackoverflow.com/questions/12525324/unable-to-use-class-as-a-key-in-nsdictionary/12525479#12525479 –
odyth
Savez-vous la raison technique pour laquelle les clés doivent se conformer à 'NSCopying '? – Drux