Objective-CでRESTKITを使用してオブジェクトマッピングを実装します

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

  •  25-10-2019
  •  | 
  •  

質問

RestKitとObjective-Cを使用して、オブジェクトへのJSON応答をマッピングするのに問題があります。

提案されているように、私はappdelegateにrkobjectmanagerとマッピングをすでに設定しています 私の前の投稿MJA.

私は自分のバックエンドを呼び出します コントローラ 以下の例に従って。

私が問題を抱えている2つの問題があります:

  1. [rkobjectmanager sharedmanager] post object:mapResponseWithを要求:Responsemapping Delegate:self]; } < - これにより、「自己」がタイプIDと互換性がありません。これに何を送る必要がありますか?
  2. 結果をキャストするにはどうすればよいですか?

どんな助けも大歓迎です。

@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