Objective-CでRESTKITを使用してオブジェクトマッピングを実装します
-
25-10-2019 - |
質問
RestKitとObjective-Cを使用して、オブジェクトへのJSON応答をマッピングするのに問題があります。
提案されているように、私はappdelegateにrkobjectmanagerとマッピングをすでに設定しています 私の前の投稿 に MJA.
私は自分のバックエンドを呼び出します コントローラ 以下の例に従って。
私が問題を抱えている2つの問題があります:
- [rkobjectmanager sharedmanager] post object:mapResponseWithを要求:Responsemapping Delegate:self]; } < - これにより、「自己」がタイプIDと互換性がありません。これに何を送る必要がありますか?
- 結果をキャストするにはどうすればよいですか?
どんな助けも大歓迎です。
@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の定義で質問を更新できます。
所属していません StackOverflow