微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ResKit iOS-为同一Element注册多个类

如何解决ResKit iOS-为同一Element注册多个类

| 嗨stackoverflow社区, 我正在使用RKObjectManager发出iOS RESTful请求,以将响应映射到本地对象。 Restkit的问题是在不同请求中为同一Element注册多个类。在此请求中,我具有具有相同元素名称\“ List \”的嵌套对象。 这是代码的一部分:
// Get array of RKObjects1 - First request of the queue
RKObjectManager * objectManager = [RKObjectManager sharedManager];
[objectManager registerClass:[RKTObject1 class] forElementNamed:@\"List\"];

RKObjectLoader * loader = [objectManager objectLoaderWithResourcePath:@\"objects1\" delegate:self];
[loader setobjectClass:[RKTList class]];



// Get array of RKObjects2 - Second request of the queue
RKObjectManager * objectManager = [RKObjectManager sharedManager];
[objectManager registerClass:[RKObjects2 class] forElementNamed:@\"List\"];

RKObjectLoader * loader = [objectManager objectLoaderWithResourcePath:@\"objects2\" delegate:self];
[loader setobjectClass:[RKTList class]];
我想知道什么,如果有解决方案可以在不同请求中为同一元素注册多个类?     

解决方法

        好了,为解决我的问题,我更新了restkit,并使用新的Object Mapping 2.0可以为同一元素键注册多个类。 您只需要为每个请求创建不同的RKObjectMapping对象,并在RKObjectLoader中对每个对象进行setObjectMapping。 例如:
RKObjectMappingProvider * mappingProvider = [RKObjectManager sharedManager].mappingProvider; 

// Create 2 RKObjectMapping for each request
RKObjectMapping * object1Mapping = [RKObjectMapping mappingForClass:[RKTList class]];
[object1Mapping mapKeyPath:@\"Id\" toAttribute:@\"idObject\"];
[object1Mapping mapKeyPath:@\"Name\" toAttribute:@\"name\"];
[mappingProvider setMapping:object1Mapping forKeyPath:@\"Objects1List\"];


RKObjectMapping * object2Mapping = [RKObjectMapping mappingForClass:[RKTList class]];
[object2Mapping mapKeyPath:@\"Id\" toAttribute:@\"idObject\"];
[object2Mapping mapKeyPath:@\"Name\" toAttribute:@\"name\"];
[mappingProvider setMapping:object2Mapping forKeyPath:@\"Objects2List\"];

//Make the 2 request with explicit object mapping
RKObjectManager * objectManager = [RKObjectManager sharedManager];
RKObjectLoader * loaderFirstRequest = [objectManager objectLoaderWithResourcePath:@\"objects1\" delegate:self];
[loaderFirstRequest setObjectMapping:object1Mapping];

RKObjectLoader * loaderSecondRequest = [objectManager objectLoaderWithResourcePath:@\"objects2\" delegate:self];
[loaderSecondRequest setObjectMapping:object2Mapping];
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。