In my core data project I have a User
entity with a followers
/following
relationship which destination is also the User
entity.
To get the info of a given user
I call an endpoint with this structure: user/:id/
To fetch his followers
/following
users I call: /user/:id/followers
I have added the following routes to the RKObjectManager
:
[manager.router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"followers" objectClass:[User class] pathPattern:@"user/:id/followers" method:RKRequestMethodGET]];
[manager.router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"following" objectClass:[User class] pathPattern:@"user/:id/following" method:RKRequestMethodGET]];
Then I call:
[[RKObjectManager sharedManager] getObjectsAtPathForRelationship:@"followers" ofObject:user parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
But RestKit cannot perform the mapping. I guess I'm missing adding to relationship information to the RKEntityMapping
of the User
entity. I've tried different approached but none successful. I appreciate any help on this issue.
Here is the User entity mapping:
RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:managedObjectStore];
[userMapping addAttributeMappingsFromDictionary:@{
@"id": @"id",
@"name": @"name",
@"user_name": @"username"}];
And the descriptior:
[RKResponseDescriptor responseDescriptorWithMapping:userMapping
method:RKRequestMethodGET
pathPattern:@"user/:id/followers"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]
I guess I should add something to the userMapping
referencing followers/following but I haven't been able to figure it out yet. Thanks.
This seems to be a limitation / bug in RestKit. You may want to raise this on the issues list in RestKit github page.
Your simplest fix should be to connect the relationship in the success block using the items provided in the mappingResult
and the source user
object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With