【问题标题】:Mapping arrays in restkit在restkit中映射数组
【发布时间】:2014-01-25 11:06:25
【问题描述】:

在 Objective-c 中使用 Restkit。

我正在尝试像这样映射一个对象:

{

"key1":"key1",
"key2":"key2",
"key3":[{
         "otherkey1":"otherkey1",
         "otherkey2":"otherkey2"
        },
        {
         "otherkey1":"otherkey1",
         "otherkey2":"otherkey2"
        },
       ]

}

我正在做这样的事情:

RKObjectManager *objMan = [[RKObjectManager alloc] initWithHTTPClient: client];

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromArray:@[@"key1",
                                                @"key2",
                                                @"key3"]];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[objContainer class] rootKeyPath:nil method:RKRequestMethodAny];

/**/
RKObjectMapping *requestMapping1 = [RKObjectMapping requestMapping];
[requestMapping1 addAttributeMappingsFromArray:@[@"otherkey1",
                                                @"otherkey2",
                                                ]];

RKRequestDescriptor *requestDescriptor1 = [RKRequestDescriptor     requestDescriptorWithMapping:requestMapping1 objectClass:[ContainerClient class] rootKeyPath:@"key3" method:RKRequestMethodAny];

RKObjectManager *manager = [RKObjectManager sharedManager];
[manager addRequestDescriptor:requestDescriptor];

RKObjectMapping *objMapping = [RKObjectMapping mappingForClass:[objContainer class]];
[objMapping addAttributeMappingsFromDictionary:@{
                                                 @"key1" : @"key1",
                                                 @"key2" : @"key2",
                                                 @"key3" : @"key3",
                                                 }];

/**/
RKObjectManager *manager1 = [RKObjectManager sharedManager];
[manager1 addRequestDescriptor:requestDescriptor1];


RKObjectMapping *objMapping1 = [RKObjectMapping mappingForClass:[ContainerClient class]];
[objMapping1 addAttributeMappingsFromDictionary:@{
                                                 @"otherkey1" : @"otherkey1",
                                                 @"otherkey2" : @"otherkey2",
                                                 }];
/**/

类 ContainerClient

@property (strong, nonatomic) NSNumber* otherkey1;

@property (strong, nonatomic) NSString *otherkey2;

类 objContainer

@property (strong, nonatomic) NSNumber* key1;

@property (strong, nonatomic) NSNumber* key2;

@property (strong, nonatomic) NSMutableArray* key3;

当它发送没有列表和工作的对象时,有类似这样的代码与服务器通信。 如何映射列表?

【问题讨论】:

  • 您没有创建任何响应描述符。您是向服务器发送任何对象还是只是接收?
  • 我发送,服务器填写返回。换句话说,它作为我发送的对象响应
  • 所以你有发送的请求描述符。您需要接收的响应描述符。如果key3 应该包含ContainerClient 的实例,那么您也需要一个关系映射。
  • 我是怎么做到的?我如何进行关系映射?

标签: objective-c arrays mapping restkit


【解决方案1】:

您需要设置响应描述符 - 目前完全没有这些。

如果key3 应该包含ContainerClient 的实例,那么您也需要一个关系映射。使用addRelationshipMappingWithSourceKeyPath:mapping: 执行此操作。

【讨论】:

  • 这样的? [objMapping addRelationshipMappingWithSourceKeyPath:@"key3" mapping:objMapping1];
  • 是的。然后是objMapping 的响应描述符。
猜你喜欢
  • 2017-12-15
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2013-06-15
相关资源
最近更新 更多