Hi have used restkit in my several previous projects with version 0.10.0. But now i am going to move with new restkit v0.20.3.
I followed all the steps from upgrading 10.0 to 20.0 from HERE.
I am able execute my request and response also came under success blog. But i can get the property of my response object. That is very shocking for now. I can get value only by [data valueForKey:@""]
which is not good i guess in restkit.
Can any one tell me about how we get value from object's property.
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"%lu", (unsigned long)mappingResult.array.count);
DataForResponse *data = [mappingResult.array objectAtIndex:0];
User *user = [data valueForKey:@"user"];
User *user = [[data.user allObjects] firstObject];
NSLog(@"%@",[user valueForKey:@"email"]);
RKLogInfo(@"Load collection of Users: %@", mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"%@",operation.HTTPRequestOperation.responseString);
RKLogError(@"Operation failed with error: %@", error);
}];
My goal is to get value of email like from user.email
After searching & based on my restkit knowledge below code is worked.
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[DataForResponse objectMappingForDataResponse:LOGIN] method:RKRequestMethodPOST pathPattern:nil keyPath:@"data" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[rkomForLogin addResponseDescriptor:responseDescriptor];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
operation.targetObject = data;
[rkomForLogin postObject:nil path:@"login" parameters:dict success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
// Handled with articleDescriptor
NSLog(@"%@",operation.HTTPRequestOperation.responseString);
DataForResponse *data = [mappingResult.array objectAtIndex:0];
User *user = [[data.user allObjects] firstObject];
NSLog(@"%@",[user email]);
NSLog(@"%ld",operation.HTTPRequestOperation.response.statusCode);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// Transport error or server error handled by errorDescriptor
NSLog(@"%@",operation.HTTPRequestOperation.responseString);
RKLogError(@"Operation failed with error: %@", error);
}];
This is same object based response that i was getting in restkit 0.10 so this is way to execute a request.