Question

I ai cartographie difficulté une réponse JSON à des objets en utilisant RestKit et Objective-C.

Je l'ai déjà mis en place mon RKObjectManager et applications dans mon AppDelegate comme suggéré dans mon précédent mja .

J'appelle mon back-end dans mon contrôleur comme dans l'exemple ci-dessous.

Il y a deux questions que je vais avoir des problèmes avec:

  1. [[RKObjectManager sharedManager] postObject: Demande mapResponseWith: délégué responseMapping: auto]; } <- Il en résulte un « soi » est incompatible avec l'identifiant de type. Que dois-je envoyer à cela?
  2. Comment puis-je jetai le résultat dans didLoadObject à l'objet de traduction J'ai défini (translationText)

Toute aide serait très apprécié.

@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);  
}
Était-ce utile?

La solution

pour corriger le premier numéro, déclarer votre controleur dans le fichier .h comme suit:

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

Vous le jeter comme ceci:

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

ou vous pouvez éviter la distribution en appelant sélecteur approprié

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

vous pouvez mettre à jour votre question avec la définition de @properties dans votre objet de traduction afin d'être sûr que cette réponse est correcte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top