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)并且映射良好。

但是,我怎样才能映射到NSArrayimageUrls- 这是一个数组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];

LT评论映射

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

1 回答 1

2

的映射comments应该就像你的映射userplace(显然只是使用不同的映射,commentMapping)。RestKit 将确定目标是一个集合,源是一个集合并做正确的事情。

因为imageUrls,JSON 已经是一个字符串数组,所以 RestKit 基本上可以复制它。您需要做的就是添加到“容器”映射(无论是哪个):

@"images" : @"imageUrls"
于 2013-12-20T16:10:01.167 回答