tengo una clase que estoy encapsular ABRecordID con y cuando se utiliza como una clave para agregar a una NSMutableDictionary, consigo la excepción de tiempo de ejecución:NSInvalidArgumentException excepción/copyWithZone con NSMutableDictionary
"NSInvalidArgumentException: *** - [MyRecordId copyWithZone:]: selector no reconocido enviado a instancia"
MyRecordId declararse como:
@interface MyRecordId : NSObject {
ABRecordID abRecordId;
}
-(id)initWithId:(ABRecordID)anABRecordId;
@property (nonatomic) ABRecordID abRecordId;
@end
Adición de diccionario:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
MyRecordId *recordId = [[MyRecordId alloc] initWithId:anABRecordId];
[dict setObject:@"hello" forKey:recordId];
La última línea hace que la excepción .. Sé que no se puede almacenar tipos de objetos no como claves en un diccionario, pero pensé que envolviéndolo en la clase derivada NSObject lo haría bien.
¿No se supone que debo almacenar ABRecordID en otros objetos? ¿Debo hacer algo más?
No sabía que NSValue era el más adecuado para este propósito. ¿Qué inicializador usaría para construirlo con 'ABRecordID'? –
Voy con 'NSValue valueWithNonretainedObject' personalmente, debería funcionar para usted. Solo ten en cuenta que no mantendrá tu objeto para ti, por supuesto ... – Chris