Pregunta

Tengo problemas para mapear una respuesta JSON a los objetos usando Restkit y Objective-C.

Ya configuré mi rkobjectManager y mapeos en mi appdelegate como se sugiere en Mi publicación anterior por MJA.

Llamo a mi backend en mi controlador Según el ejemplo a continuación.

Hay dos problemas con los que tengo problemas:

  1. [RKObjectManager SharedManager] PostObject: solicitud MapResponsewith: ResponseMapping Delegate: Self]; } <- Esto da como resultado un "yo" es incompatible con el tipo ID. ¿Qué necesito enviar a esto?
  2. ¿Cómo lanzar el resultado en didloadObject al objeto de traducción que he definido (TradationText)

Cualquier ayuda sería muy apreciada.

@synthesize inputtext = _text; 
@synthesize translation = _translation; 
@synthesize translatedText = _translatedText;

- (Translation *)translatedText {
if (!_translatedText) _translatedText = [[Translation alloc] init];
return _translatedText; }

- (IBAction)translatePressed {
//create TranslationRequest
TranslationRequest *request = [[TranslationRequest alloc] init];
[request setSourceId:@"1"];
[request setRegionTag:@"Hello"];
[request setInputString:self.inputtext.text];

//fetch the desired mapping to map response with
RKObjectMapping * responseMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[Translation class]];

[[RKObjectManager sharedManager] postObject:request mapResponseWith:responseMapping delegate:self]; }

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(id)object  { 
    self.translation.text = [object translatedText].translation; 
} 
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error { 
    NSLog(@"Hit error: %@", error);  
}
¿Fue útil?

Solución

Para rectificar el primer problema, declare su controlador en el archivo .h de la siguiente manera:

#import "RestKit/RestKit.h"
...
@interface MyController : UIViewController<RKObjectLoaderDelegate>

Lo lanzas así:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(id)object  { 
    Translation *myTranslation = (Translation*)object;
    ... 
} 

o puede evitar el reparto llamando al selector apropiado

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(id)object  { 
    self.translation.text = [[object translatedText] translation];
} 

Puede actualizar su pregunta con la definición de @Properties en su objeto de traducción para asegurarse de que esta respuesta sea correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top