将没有root密钥的对象映射到动态url?
问题描述:
我试图映射以下对象:将没有root密钥的对象映射到动态url?
{"walletAccepted":false,"creditCardTypesAccepted":["visa","mastercard","discover","americanexpress"],"paypalAccepted":false}
要具有相同属性的对象。但是,ResourcePath是动态的,因为它沿着/ paymentmethods/zone /行:internalZoneCode
我在映射时所做的每一次尝试总是以“映射期间遇到的错误:无法找到对象映射对于keyPath:''“
我认为问题是没有root密钥/密钥路径。我也尝试没有运气以下:
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];
答
我发现做到这一点的方法是配置的映射,并添加映射对象管理没有一个关键路径或resourcek
所以像这样:
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];