Objective c RestKit POST响应具有错误映射
当我发布一个对象时,响应映射到错误的对象Objective c RestKit POST响应具有错误映射,objective-c,restkit-0.20,Objective C,Restkit 0.20,当我发布一个对象时,响应映射到错误的对象 // Resquest for post new article RKObjectMapping* articleRequestMapping = [RKObjectMapping requestMapping]; [articleRequestMapping addAttributeMappingsFromDictionary:@{ @"titl
// Resquest for post new article
RKObjectMapping* articleRequestMapping = [RKObjectMapping requestMapping];
[articleRequestMapping addAttributeMappingsFromDictionary:@{
@"title" : @"title",
@"body" : @"body",
}];
RKRequestDescriptor *requestDescriptorArticle = [RKRequestDescriptor
requestDescriptorWithMapping:articleRequestMapping
objectClass:[Article class]
rootKeyPath:nil
method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:requestDescriptorArticle];
// Response for post new article
// response.body={
// "result": {
// "ok": 1
// }
// }
RKObjectMapping *resultMapping = [RKObjectMapping mappingForClass:[Result class]];
[resultMapping addAttributeMappingsFromDictionary:@{
@"ok" : @"ok"
}];
RKResponseDescriptor *resArticleCreate = [RKResponseDescriptor
responseDescriptorWithMapping:resultMapping
method:RKRequestMethodPOST
pathPattern:[NSString stringWithFormat:@"%@%@",apiVersion,@"/articles"]
keyPath:@"result"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:resArticleCreate];
日志:
2013-10-09 07:05:43.335 TabbedDemo[35156:4703] D restkit.object_mapping:RKMapperOperation.m:378 Executing mapping operation for representation: {
result = {
ok = 1;
};
}
and targetObject: <Article: 0x7d88670>
这是RestKit的问题还是我做错了?这是RestKit的设计假设。它确实会在某些情况下引发问题,比如你的问题。当发布和对象时,RestKit将始终尝试将响应映射到同一个对象中 您的变通解决方案是一个很好的选择
您也可以发布一个字典,并将结果映射回该字典。这是一个RestKit设计假设。它确实会在某些情况下引发问题,比如你的问题。当发布和对象时,RestKit将始终尝试将响应映射到同一个对象中 您的变通解决方案是一个很好的选择
您也可以发布一本词典,并将结果映射回该词典。谢谢。让我困惑的是,为什么我需要RestKit,而不是自己用AFNetworking和JSON做这些事情。我花了太多时间试图让它工作,比如对象映射、请求路由、子对象映射、动态映射等等。。。最后,我不得不以旧的方式做一些事情,失去了处理任意协议的灵活性。你可以使用AFNetworking,你应该在RestKit无效或过度使用的地方使用它。在使用AFNetworking获取JSON响应,然后使用RestKit映射器操作的情况下,您也可以执行一些混合操作。。。您如何决定使用什么以及何时开始使用。谢谢。让我困惑的是,为什么我需要RestKit,而不是自己用AFNetworking和JSON做这些事情。我花了太多时间试图让它工作,比如对象映射、请求路由、子对象映射、动态映射等等。。。最后,我不得不以旧的方式做一些事情,失去了处理任意协议的灵活性。你可以使用AFNetworking,你应该在RestKit无效或过度使用的地方使用它。在使用AFNetworking获取JSON响应,然后使用RestKit映射器操作的情况下,您也可以执行一些混合操作。。。你如何决定使用什么,何时开始体验。
// normal one, but with wrong mapping object.
// [[RKObjectManager sharedManager] postObject:article path:nil parameters:@{@"_csrf" : self._csrf}
// success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){
// NSLog(@"result:%@",[mappingResult firstObject]);
// }
// failure:^(RKObjectRequestOperation *operation, NSError *error) {
// NSLog(@"Hit error: %@", error);
// }];
RKObjectRequestOperation *operation = [[RKObjectManager sharedManager] appropriateObjectRequestOperationWithObject:article
method:RKRequestMethodPOST
path:nil
parameters:@{@"_csrf" : self._csrf}];
Result *r1 = [Result new];
operation.targetObject = r1;
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"result:%@",[mappingResult firstObject]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Hit error: %@", error);
}];
[operation start];