0

次のオブジェクトをマップしようとしています:

{"walletAccepted":false,"creditCardTypesAccepted":["visa","mastercard","discover","americanexpress"],"paypalAccepted":false}

同一の属性を持つオブジェクトへ。ただし、ResourcePath は動的であり、/paymentmethods/zone/:internalZoneCode の行に沿っています。

マッピングで行ったすべての試みは、常に「マッピング中にエラーが発生しました: keyPath のオブジェクトマッピングが見つかりませんでした: ''」で終了します。

問題は、ルート キー/キー パスがないことだと思います。私はまた、運が悪かったので、次のことを試みました:

RKURL *rkUrl = [RKURL URLWithBaseURL:[RKClient sharedClient].baseURL resourcePath:[NSString stringWithFormat:@"/paymentoptions/zone/%@", zoneNumber]];
RKObjectLoader* loader = [[RKObjectLoader alloc] initWithURL:rkUrl mappingProvider:[RKObjectManager sharedManager].mappingProvider];
loader.method = RKRequestMethodGET;
loader.delegate = self;

loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[PMZonePaymentMethods class]];
[loader send];
4

1 に答える 1

0

それを実現する方法は、マッピングを構成し、キーパスまたはリソースなしでマッピングをオブジェクトマネージャーに追加することであることがわかりました

このように:

RKObjectMapping* zonePaymentMethodsMapping = [RKObjectMapping mappingForClass:[PMZonePaymentMethods class]];
[zonePaymentMethodsMapping mapKeyPath:@"walletAccepted" toAttribute:@"walletAvailable"];
[zonePaymentMethodsMapping mapKeyPath:@"creditCardTypesAccepted" toAttribute:@"cards"];
[zonePaymentMethodsMapping mapKeyPath:@"paypalAccepted" toAttribute:@"paypalAvailable"];

[[RKObjectManager sharedManager].mappingProvider addObjectMapping:zonePaymentMethodsMapping];

これを使用してリクエストを行います。

RKURL *rkUrl = [RKURL URLWithBaseURL:[RKClient sharedClient].baseURL resourcePath:[NSString stringWithFormat:@"/paymentoptions/zone/%@", zoneNumber]];
RKObjectLoader* loader = [[RKObjectLoader alloc] initWithURL:rkUrl mappingProvider:      [RKObjectManager sharedManager].mappingProvider];
loader.method = RKRequestMethodGET;
loader.delegate = self;

loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider  objectMappingForClass:[PMZonePaymentMethods class]];
[loader send];
于 2012-07-26T14:14:11.233 に答える