配列をオブジェクトにマップする必要があります。RKObjectMapping を使用しています。すべて問題ありませんが、Rewards 配列がマップされていません。報酬の NSSet を null として取得します。
の@interface VBDealDetail : NSObject
@property(nonatomic,retain) NSString *dealName;
@property(nonatomic,retain) NSNumber *dealID;
@property(nonatomic,retain) NSSet *rewards;
私のコントローラークラスでは...
RKObjectManager *manager = [[VBRestKit sharedDataManager] objectManager];
RKObjectMapping *dealDetailEntryMapping = [RKObjectMapping mappingForClass:[VBDealDetailEntries class]];
RKObjectMapping *successResponseMapping = [RKObjectMapping mappingForClass:[VBCommonResponse class]];
[successResponseMapping addAttributeMappingsFromDictionary:@{
@"code": @"code",
@"msg" : @"message"
}];
RKObjectMapping* rewardMapping = [RKObjectMapping mappingForClass:[VBRewards class] ];
// NOTE: When your source and destination key paths are symmetrical, you can use addAttributesFromArray: as a shortcut instead of addAttributesFromDictionary:
[rewardMapping addAttributeMappingsFromDictionary:@{@"rewardId":@"rewardID",
@"rewardTitle":@"rewardTitle" }];
RKObjectMapping *dealDetailMapping = [RKObjectMapping mappingForClass:[VBDealDetail class]];
[dealDetailMapping addAttributeMappingsFromDictionary:@{
@"dealId" : @"dealID",
@"dealName" : @"dealName"
}];
[dealDetailEntryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath: @"response"
toKeyPath: @"commonResponse"
withMapping: successResponseMapping]];
[dealDetailEntryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath: @"dealDetails"
toKeyPath: @"dealDetail"
withMapping: dealDetailMapping]];
[dealDetailEntryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"reward"
toKeyPath:@"rewards"
withMapping:rewardMapping]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping: dealDetailEntryMapping
pathPattern: nil
keyPath: @"dealCollection"
statusCodes: RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[manager addResponseDescriptor:responseDescriptor];