Quiero almacenar un conjunto de pares clave de valores, siendo la clave mi propio objeto (ObjectA) que hereda de NSObject y el valor es un int.
Estoy tratando de usar un NSMutableDictionary. Me entender que se puede sólo los tipos de tienda de objetos en el diccionario, así que tengo la siguiente:Claves de objeto con NSMutableDictionary (Objective-C)
id value = [NSNumber numberWithInt:my_number];
[[self dictionary] setObject:value forKey:myObjectA];
Ahora que me da un error diciendo
- [Objecta copyWithZone:]: Selector no reconocido envió a la instancia
que está bien, entiendo que las claves de objeto deben implementar el protocolo NSCopying. Sin embargo, luego leo que puedes hacer esto al envolver tus objetos usando NSValue.
¿Puede alguien explicar cómo envolvería mis objetos y cómo puedo encontrar el valor con la llave? ¿Todavía puedo usar dictionary objectForKey:myObjectA
o tengo que envolver myObjectA con un objeto NSValue mientras estoy buscando? ¿O debería implementar NSCopying en mi clase personalizada o usar una clave de cadena en su lugar?
Estoy buscando la forma más simple y sencilla de usar un diccionario, si tengo que implementar una clave de cadena y usar setValue: forKey: en su lugar, pero prefiero usar la clave del objeto si puedo.
¿Podría ampliar su respuesta para incluir lo que pondría en mi implementación copyWithZone en mi propia clase? – link664
@ link664: Actualicé mi respuesta. – DarkDust
Necesita implementar '-hash' si implementa' -isEqual: 'Si dos objetos son iguales como lo determina' -isEqual: ', entonces deben tener el mismo valor hash. – JeremyP