0

一部の JSON データを RestKit にマップしようとしていますが、これまでのところ正しく行うことができませんでした。データは、日付と登録の階層セットです。次のようになります (変更することはできません)。

{
  "days": 
  {
    "2012-10-29": {
        "2106303": {
            "activityCode": "LU",
            "approved": false,
            "hours": 0.5,
            "description": "some description",
        },
        "2106304": {
            "activityCode": "VF",
            "approved": false,
            "hours": 7.5,
            "description": "some other description",
        }
        },
        "2012-10-30": null,
  }
}

私のコードは次のようになります。

- (void)setupWeekMappingForManager:(RKObjectManager *)manager
{
    RKObjectMapping *registrationMapping = [RKObjectMapping mappingForClass:[Registration class]];
    registrationMapping.forceCollectionMapping = YES;
    [registrationMapping mapKeyOfNestedDictionaryToAttribute:@"registrationNumber"];

    RKObjectMapping *dayMapping = [RKObjectMapping mappingForClass:[Day class]];
    dayMapping.forceCollectionMapping = YES;
    [dayMapping mapKeyOfNestedDictionaryToAttribute:@"date"];

    // how can this relationship be mapped?
    [dayMapping mapKeyPath:@"(date)." toRelationship:@"registrations" withMapping:registrationMapping]; 

    [manager.mappingProvider setMapping:dayMapping forKeyPath:@"days"];
}

喜んで元に戻りますが、2 つのタイプの関係をマッピングする良い方法を見つけることができません。

正しい方向へのプッシュは大歓迎です。

よろしく、 トミー

4

1 に答える 1

1

これは私のために働いた:

- (void)setupWeekMappingForManager:(RKObjectManager *)manager
{
    RKObjectMapping *registrationMapping = [RKObjectMapping mappingForClass:[Registration class]];
    registrationMapping.forceCollectionMapping = YES;
    [registrationMapping mapKeyOfNestedDictionaryToAttribute:@"registrationNumber"];
    [registrationMapping mapKeyPath:@"(registrationNumber).description" toAttribute:@"description"];

    RKObjectMapping *dayMapping = [RKObjectMapping mappingForClass:[Day class]];
    dayMapping.forceCollectionMapping = YES;
    [dayMapping mapKeyOfNestedDictionaryToAttribute:@"date"];
    [dayMapping mapKeyPath:@"(date)" toRelationship:@"registrations" withMapping:registrationMapping];

    [manager.mappingProvider setMapping:dayMapping forKeyPath:@"days"];
}

これにより、NSArrayとしての時間登録の素晴らしい配列を持つdayオブジェクトが得られます。参考までに、次のようになります。

@interface Day : NSObject
@property (nonatomic, readonly, copy) NSDate *date;
@property (nonatomic, readonly, strong) NSMutableArray *registrations;
@end
于 2012-11-09T17:45:59.000 に答える