Реализация картирования объектов с использованием RESTKIT в Objective-C

StackOverflow https://stackoverflow.com/questions/8319397

  •  25-10-2019
  •  | 
  •  

Вопрос

У меня проблемы с отображением ответа JSON на объекты, используя RESTKIT и Objective-C.

Я уже установил свои Rkobjectmanager и отображения в своем AppDelegate, как предложено в Мой предыдущий пост по MJA.

Я называю свой бэкэнд в своем контроллер в соответствии с примером ниже.

У меня есть две проблемы:

  1. [Rkobjectmanager sharedmanager] postobject: запрос mapresponsewith: responsemapping делегат: self]; } <- это приводит к «я» несовместимо с идентификатором типа. Что мне нужно отправить на это?
  2. Как мне подтолкнуть результат в DidloadObject в объект перевода, который я определил (Translation Text)

Любая помощь приветствуется.

@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);  
}
Это было полезно?

Решение

Чтобы исправить первую проблему, объявьте свой контроль в файле .h следующим образом:

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

Вы бросили это так:

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

или вы можете избежать актера, позвонив в соответствующий селектор

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

Вы можете обновить свой вопрос определением @properties в вашем объекте перевода, чтобы быть уверенным, что этот ответ верен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top