3

次のように、クライアント側とサーバー側の両方に応答オブジェクトがあります。

クライアント側 :

//BaseResponse.h
@interface BaseResponse : NSObject{
    NSString *code;
    NSString *message;
    NSObject *responseObject;
}
+(RKObjectMapping *)objectMapping;

//BaseResponse.m
+(RKObjectMapping *)objectMapping{
    RKObjectMapping *baseResponseMapping = [RKObjectMapping mappingForClass:[BaseResponse class]];
    [baseResponseMapping mapKeyPath:@"code" toAttribute:@"code"];
    [baseResponseMapping mapKeyPath:@"message" toAttribute:@"message"];
    [baseResponseMapping mapKeyPath:@"responseObject" toAttribute:@"responseObject"];

    return baseResponseMapping;
}

サーバ側 :

public class BaseResponse {
   private String code; 
   private String message;  
   private Object responseObject;
...
}

iOS から RESTful Web サービスを呼び出すと、BaseResponse オブジェクトが返されます。ただし、BaseResponse の responseObject は、Web サービス メソッドによって異なる場合があります。だから私はサーバー側とクライアント側でオブジェクトをやった。

だから私の質問はこれです:- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)responseメソッドまたは- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objectsメソッドが呼び出された後、レストキットで手動でオブジェクトマッピングを作成するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

0

実際、RESTkit はこれに対して非常に優れたサポートを提供しています。基本的に、実行したいマッピングの種類を識別するために使用できる何かが応答に含まれている必要があります。

これを行うには、マッピングを動的マッピングとして定義し、そこから移動します。

wiki から例をコピーすることもできますが、それはごまかしになるため、マッピングの説明のこの部分を参照することをお勧めします。

于 2013-10-25T09:13:01.717 に答える
0

私の解決策はこれです

...
[objectManager postObject:nil path:path parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
    BaseResponse *response = (BaseResponse *)[[result array] objectAtIndex:0];
    NSError *error = nil;
    AppVersion *appVersion = [[AppVersion alloc]init];
    RKMappingOperation *operation = [[RKMappingOperation alloc]
                                                 initWithSourceObject:response.responseObject destinationObject:appVersion mapping:[AppVersion objectMapping] ];

    BOOL success = [operation performMapping:&error];
...
于 2014-02-14T15:48:06.670 に答える