establezca dinámicamente la clave para la codificación de valor clave en el iphone de Objective-C

Tengo una clase llamada mycallback:

[mycallback setValue:[code objectForKey:@"abc"] forKey:@"abc"];

Se llama para muchos de mis controladores. La cuestión es que extraigo datos de una base de datos mysql y los envío a mycallback. Así que puede que no sepa cuál es la clave. Y además de eso, no quiero declarar variables de instancia dentro de mi clase de devolución de llamada porque las quiero separadas.

Desafortunadamente, si el código se ejecuta arriba, recibo este mensaje:

exception 'NSUnknownKeyException', reason: '[<CallbackClass 0x7b6c5d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key fence.'

Entonces quiero configurar dinámicamente las teclas pero no dentro de mycallback. Así que creo una categoría para NSDictionary y agrego el método valueForUndefinedKey:

- (id)valueForUndefinedKey:(NSString *)key
{
    NSLog(@"This key not being called %@", key);
    return nil;
}

pero 1) valueForUndefinedKey no se llama y 2) no estoy seguro de qué poner allí para que desaparezca ese error.

gracias por responder.

preguntado el 22 de mayo de 12 a las 21:05

Regresé la pregunta al estado original. Sus ediciones hicieron que fuera una pregunta completamente diferente, y mi respuesta a continuación no se aplica. Hace que sea confuso para cualquier otra persona que venga a esta pregunta. En lugar de cambiar radicalmente una pregunta existente, simplemente haga una nueva. -

1 Respuestas

Tu has definido valueForUndefinedKey: que es lo que se ocupa de los valores de retorno. Pero en su fragmento de código parece que está intentando establecer un valor para una clave indefinida. En cuyo caso, el método a utilizar es:

setValue:forUndefinedKey:

Un ejemplo, basado en lo que parece que estás tratando de hacer:

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
    NSLog(@"Attempting to set value: %@ for key: %@", value, key);
}

contestado el 23 de mayo de 12 a las 16:05

Todavía estoy atascado con la segunda parte de la pregunta. Tengo una instancia var llamada callbackData de tipo NSMutableDictionary en mi clase de devolución de llamada que hereda de nsobject. Agregué el método anterior a mi clase de devolución de llamada, y luego establecí la clave y el valor en la instancia var: [callbackData setObject:value forKey:key]; Pero el error todavía se genera. - John Merlino

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.