1

RESTKitを使用してWebサービスにアクセスしました。しかし、サーバーエラー(404、403 ...など)をRESTKitの標準RKErrorMessageクラスにマップするのに問題があります。サービスから次のJSON応答と403ステータスコードを取得したとします。

{"errors":{"message":"Some error message"}}

私のiOSアプリケーションでは、次の助けを借りてエラーをマッピングしようとしています。

RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class
[errorMapping addPropertyMapping:[RKAttributeMapping
   attributeMappingFromKeyPath:@"message" toKeyPath:@"message"]];

statusCodes4xx = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError);

errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:notecardMapping 
                     pathPattern:nil keyPath:@"errors" statusCodes:statusCodes4xx];

しかし、私が得るのは、RESTKitからのエラーだけです。

Failed mapping operation: No mappable values found for any of the attributes or relationship mappings

私のせいはどこですか?たとえば、記述子のパスが間違っているだけですか?

4

1 に答える 1

6

応答記述子ではnotecardMappingなくを使用しているようです。errorMappingこれを試して:

RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]];

[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]];

RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping
                                                                                pathPattern:nil
                                                                                    keyPath:@"errors.message"
                                                                                statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError)];

[manager addResponseDescriptorsFromArray:@[errorDescriptor]];
于 2013-01-07T22:38:41.410 に答える