ResKit iOS - Registering multiple classes for one item

Hi, stackoverflow community, I am using RKObjectManager to make ROSful requests for iOS to map responses to local objects.

My problem with Restkit is registering multiple classes for the same element in different requests. In this query, I have nested objects with the same list item name.

Here is the piece of code:

// 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]]; 

What would I like to know if there is any solution for registering multiple classes for the same element in different queries?

+7
source share
1 answer

Well, to solve my problem, I am updating restkit and with the new Object Mapping 2.0 you can register several classes for the same element keys.

You only need to create different RKObjectMapping objects for each request and do setObjectMapping of each object in RKObjectLoader.

For example:

 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]; 
+2
source

All Articles