1

次のようないくつかのフィールドで構成されるオブジェクトがあります。

@property (nonatomic, copy)     NSString*               title;
@property (nonatomic, copy)     NSString*               body;
@property (nonatomic, copy)     NSArray*                imageUrls;
@property (nonatomic, copy)     NSString*               postId;
@property (nonatomic)           CLLocationCoordinate2D  location;
@property (nonatomic)           LTUser                  *user;
@property (nonatomic)           LTPlace                 *place;
@property (nonatomic, copy)     NSArray*                comments;

すべてNSStringとカスタム オブジェクト ( LTUser/などLTPlace) が適切にマッピングされています。

しかし、どうすればNSArrayof ( imageUrls- これはNSString/の配列comments- これはカスタムオブジェクトの配列 ( LTComment)) にマップできますか?

"images": [
        "http://****.com/images/1385929903887.jpg",
        "http://****.com/images/131315313131.jpg",
        "http://****.com/images/1351351351.jpg"
]

メイン オブジェクトのマッピング:

RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[LTUser class]];
[userMapping addAttributeMappingsFromDictionary:@{
                                                  @"_id":@"userId",
                                                  @"username":@"userName",
                                                  @"name":@"name"
                                                  }];   

RKObjectMapping *placeMapping = [RKObjectMapping mappingForClass:[LTPlace class]];
[placeMapping addAttributeMappingsFromDictionary:@{
                                                   @"_id":@"placeId",
                                                   @"image":@"name",
                                                   @"name":@"image"
                                                   }];
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[LTPost class]];

[mapping addAttributeMappingsFromDictionary:@{
                                              @"_id" : @"postId",
                                              @"createdAt" : @"createdAt",
                                              @"body" : @"body",
                                              @"title" : @"title"
                                              }];

[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"user" toKeyPath:@"user" withMapping:userMapping]];
[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"place" toKeyPath:@"place" withMapping:placeMapping]];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                        method:RKRequestMethodGET
                                                                                   pathPattern:kLTAPIGetPostsRequest
                                                                                       keyPath:@"posts"
                                                                                   statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];

Lコメントのマッピング

RKObjectMapping* commentMapping = [RKObjectMapping mappingForClass:[LTComment class]];
[commentMapping addAttributeMappingsFromDictionary:@{
                                                     @"user_name":@"userName",
                                                     @"text":@"text"
                                                     }];
4

1 に答える 1

2

のマッピングは、と のcommentsマッピングと同じである必要があります (マッピングがuser明らかplaceに異なるだけcommentMappingです)。RestKit は、宛先がコレクションであり、ソースがコレクションであると判断し、正しいことを行います。

の場合imageUrls、JSON はすでに文字列の配列であるため、RestKit は基本的にそれをコピーできます。あなたがする必要があるのは、「コンテナ」マッピングに追加することだけです(それがどちらであっても):

@"images" : @"imageUrls"
于 2013-12-20T16:10:01.167 に答える