Question

Log:

2014-04-09 15:03:10.196 App[49808:60b] request <NSMutableURLRequest: 0xd091170> { URL: http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z }
2014-04-09 15:03:10.214 App[49808:60b] I restkit.network:RKObjectRequestOperation.m:180 GET 'http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z'
2014-04-09 15:03:10.300 App[49808:632f] D restkit.object_mapping:RKMapperOperation.m:377 Executing mapping operation for representation: {
    meetups =     (
                {
            activities =             (
                                {
                    activityId = 37;
                    activityType = "<null>";
                    customData = "<null>";
                    locationAddress = "k2-LocationAddress";
                    locationName = "k2-LocationName";
                    startTime = "0000-00-00 00:00:00";
                },
                                {
                    activityId = 38;
                    activityType = "<null>";
                    customData = "<null>";
                    locationAddress = "k-LocationAddress";
                    locationName = "k-LocationName";
                    startTime = "0000-00-00 00:00:00";
                }
            );
            comment = comment;
            gettingBack = "gettingBack Test";
            gettingThere = "gettingBack Test";
            meetingType = 1;
            meetupId = 65;
            modified = "2014-04-09T20:59:29.000Z";
            ownerId = Joe;
            recipientId = "<null>";
        }
    );
}
 and targetObject: (null)
2014-04-09 15:03:10.301 App[49808:632f] D restkit.object_mapping:RKMapperOperation.m:403 Finished performing object mapping. Results: (null)
2014-04-09 15:03:10.302 App[49808:21f] E restkit.network:RKObjectRequestOperation.m:243 GET 'http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z' (200 OK / 0 objects) [request=0.0849s mapping=0.0000s total=0.1043s]: Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No response descriptors match the response loaded." UserInfo=0xd0b5a40 {NSErrorFailingURLStringKey=http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z, NSLocalizedFailureReason=A 200 response was loaded from the URL 'http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z', which failed to match all (0) response descriptors:, NSLocalizedDescription=No response descriptors match the response loaded., keyPath=null, NSErrorFailingURLKey=http://www.domain.com/meetups?lastrequest=2014-04-09T15%3A03%3A10Z, NSUnderlyingError=0xd08a190 "No mappable object representations were found at the key paths searched."}

Code:

@property (strong, nonatomic) RKObjectManager *objectManager;
....

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.objectManager = [self getObjectManager];

self.objectManager.managedObjectStore = [appDelegate setupCoreDataWithRESTKit];

[RKObjectManager sharedManager].requestSerializationMIMEType = RKMIMETypeJSON;

RKEntityMapping *invitationMapping = [RKEntityMapping mappingForEntityForName:@"Invite" inManagedObjectStore:self.objectManager.managedObjectStore];
[invitationMapping addAttributeMappingsFromDictionary:@{
                                                        @"recipientId" : @"recipientId",
                                                        @"meetingType" : @"meetingType",
                                                        @"startDate" : @"startDate",
                                                        @"gettingThere" : @"gettingThere",
                                                        @"gettingBack" : @"gettingBack",
                                                        @"comment" : @"comment"
                                                        }];
invitationMapping.identificationAttributes = @[@"meetupId"];

RKEntityMapping *activityMapping = [RKEntityMapping mappingForEntityForName:@"Activity" inManagedObjectStore:self.objectManager.managedObjectStore];
[activityMapping addAttributeMappingsFromDictionary:@{
                                                      @"locationName" : @"locationName",
                                                      @"locationAddress" : @"locationAddress",
                                                      @"startTime" : @"startTime",
                                                      @"customData" : @"customData"
                                                      }];
activityMapping.identificationAttributes = @[@"activityId"];
NSIndexSet *statusCodeSet = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);

[invitationMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"activities" toKeyPath:@"activities" withMapping:activityMapping]];


RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:invitationMapping
                                                                                        method:RKRequestMethodGET
                                                                                   pathPattern:@"/meetups"
                                                                                       keyPath:@"meetups" statusCodes:statusCodeSet];


NSMutableURLRequest *request = [self.objectManager.HTTPClient requestWithMethod:@"GET"
                                                                           path:@"/meetups"
                                                                     parameters:@{@"lastrequest": dateString

                                                                                  }];

 [self.objectManager.HTTPClient  registerHTTPOperationClass:[AFHTTPRequestOperation class]];

RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc]initWithRequest:request responseDescriptors:@[responseDescriptor]];

operation = [self.objectManager managedObjectRequestOperationWithRequest:request managedObjectContext:self.objectManager.managedObjectStore.mainQueueManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    NSArray *array = mappingResult.array;
    NSLog(@"array %@", array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {

}];

[operation start];
}

Invite has to-many relationship with Activity called activities.

Why am I getting: "No mappable object representations were found at the key paths searched." ?

Was it helpful?

Solution

This is the correct way to create the operation:

RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc]initWithRequest:request responseDescriptors:@[responseDescriptor]];

but then you replace that one with another created with:

operation = [self.objectManager managedObjectRequestOperationWithRequest:request managedObjectContext:self.objectManager.managedObjectStore.mainQueueManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

which uses the object manager proper. This issue is that you haven't given the response descriptor to the object manager, you only gave it to the operation that was just destroyed (because you replaced it).

So, use the first operation you created and set the success and failure blocks on it by calling setCompletionBlockWithSuccess:failure:.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top