Escribo una "fábrica" contextual que mantendrá un diccionario de objetos convertidores/actuadores que heredan de alguna clase Convertidor. Esta clase tiene un método:Uso de la clase como clave en NSDictionary
- (Class)classResponsibility
o algo similar, de manera que una clase StringConverter implementaría el método como:
- (Class)classResponsibility {
return [NSString class];
}
Entonces para almacenar ese convertidor en el diccionario, que habían esperado en hacer algo como:
[converters setValue:stringConverter forKey:[stringConverter classResponsibility]];
Pero el compilador se queja de que el tipo de "clase" es un tipo de parámetro no válido para el argumento 2 de la setValue: forKey: método. Quería evitar establecer la clave como el nombre de la clase ("NSString"), pero si esa es la mejor solución de la que voy a ir con ella.
¡Explicación fantástica! –
a partir de XCode 4.5, primero debe emitirlo para no recibir una advertencia: [setObject del diccionario: objeto forKey: (id) someClass]; vea esta respuesta http://stackoverflow.com/questions/12525324/unable-to-use-class-as-a-key-in-nsdictionary/12525479#12525479 –
odyth
¿Conoce la razón técnica por la cual las claves deben cumplir con 'NSCopying ¿? – Drux