Sto scrivendo una "fabbrica" contestuale che manterrà un dizionario di oggetti convertitore/recitazione che ereditano da qualche classe del convertitore. Questa classe ha un metodo:Utilizzo della classe come chiave in NSDictionary
- (Class)classResponsibility
o qualcosa di simile, in modo tale che una classe StringConverter sarebbe implementare il metodo come:
- (Class)classResponsibility {
return [NSString class];
}
Poi per memorizzare che convertitore nel dizionario, avevo sperato di fare qualcosa come:
[converters setValue:stringConverter forKey:[stringConverter classResponsibility]];
Ma il compilatore si lamenta che il tipo "Class" è un tipo di parametro valido per l'argomento 2 della setValue: Forkey: metodo. Volevo evitare di impostare la chiave come nome della classe ("NSString"), ma se questa è la soluzione migliore di quella che farò.
Fantastica spiegazione! –
come da XCode 4.5, è necessario prima lanciarlo per non ricevere un avviso: [dizionario setObject: oggetto forKey: (id) someClass]; vedi questa risposta http://stackoverflow.com/questions/12525324/unable-to-use-class-as-a-key-in-nsdictionary/12525479#12525479 –
odyth
Conosci il motivo tecnico per cui le chiavi devono essere conformi a 'NSCopying '? – Drux