Ios RESTKit异常:在搜索的关键路径中未找到可映射的对象表示
我面临一些问题。服务器收到请求,但映射未正确处理。我不明白我做错了什么 日志: 代码:Ios RESTKit异常:在搜索的关键路径中未找到可映射的对象表示,ios,objective-c,restkit,restkit-0.20,Ios,Objective C,Restkit,Restkit 0.20,我面临一些问题。服务器收到请求,但映射未正确处理。我不明白我做错了什么 日志: 代码: RKObjectMapping* objectMapping = [RKObjectMapping mappingForClass:[ResponseModel class]]; [objectMapping addAttributeMappingsFromArray:@[@"success", @"errors"]]; [objectMapping addPropertyMapping:[R
RKObjectMapping* objectMapping = [RKObjectMapping mappingForClass:[ResponseModel class]];
[objectMapping addAttributeMappingsFromArray:@[@"success", @"errors"]];
[objectMapping addPropertyMapping:[RKRelationshipMapping
relationshipMappingFromKeyPath:@"data"
toKeyPath:@"data"
withMapping:[RKObjectMapping mappingForClass:[NSArray class]]]
];
RKResponseDescriptor* responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping
method:RKRequestMethodPOST
pathPattern:@"user.sign_up/"
keyPath:nil
statusCodes:[NSIndexSet indexSetWithIndex:200]];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://cifrosvit.com/api/"]];
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
[objectManager addResponseDescriptor:responseDescriptor];
RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
[objectManager getObjectsAtPath:responseDescriptor.pathPattern parameters:params success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"success");
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"failure");
}];
响应模型接口:
@interface ResponseModel : NSObject
@property NSString* success;
@property id data;
@property (strong, nonatomic) NSArray* errors;
@end
请求:
{
"success": "true",
"data": [],
"errors": []
}
为什么RESTKIT总是调用故障块?可能您只需要更改这一行,因为它看起来像是在设置一个nil响应描述符
[objectManager addResponseDescriptor:self.responseDescriptor];
因此,删除self.
,因为似乎您没有设置实例变量,您只有一个局部变量
您也在使用
method:RKRequestMethodPOST
,但是使用getObjectsAtPath
发出请求,因此RestKit无法将GET
与POST匹配,您可能只需要更改这一行,因为看起来您正在设置一个nil响应描述符
[objectManager addResponseDescriptor:self.responseDescriptor];
因此,删除self.
,因为似乎您没有设置实例变量,您只有一个局部变量
您也在使用method:RKRequestMethodPOST
但使用getObjectsAtPath
发出请求,因此RestKit无法将GET
与POST匹配,我发现这是一个问题。我不明白为什么,但当我将请求方法从RKRequestMethodPOST更改为RKRequestMethodAny时,它就开始工作了。实际上,这个请求的类型是POST。好的,这是一个很好的观点,但它不是POST,而是GET,因为您使用的是getObjectsAtPath
您的答案完全正确。我从文档中漏掉了这个项目。谢谢。我发现这是个问题。我不明白为什么,但当我将请求方法从RKRequestMethodPOST更改为RKRequestMethodAny时,它就开始工作了。实际上,这个请求的类型是POST。好的,这是一个很好的观点,但它不是POST,而是GET,因为您使用的是getObjectsAtPath
您的答案完全正确。我从文档中漏掉了这个项目。谢谢