我正在使用 RestKit 发出 POST 请求。我能够成功发出简单的 POST 请求。这包括带有简单 NSString 的参数。不幸的是,当参数需要对象时,我无法正确发出 POST 请求。
例如,这是我的 NSDictionary 参数的样子:
NSDictionary *sectionStepParams = [NSDictionary dictionaryWithObjectsAndKeys:sectionCodeString,@"1",lastSectionStepCode,@"2",_currentState,@"State",nil];
请注意,“State”的键是一个 State 对象。目前这是我的 State.h 课程:
@interface State : NSObject
@property (nonatomic,strong) NSMutableArray *SectionStepResponses;
@property (nonatomic,copy) NSString *Token;
+(RKObjectMapping*)mapping;
-(void)output;
@end
这是一个非常简单的标题。只是一个 NSString 和一个 SectionStep 对象数组(另一个简单的类)。
如何正确传递状态对象?将 State 对象放入 NSDictionary 不会给我正确的 JSON 响应。我是否必须将此状态对象转换为参数 NSDictionary 可以识别的数据?
这是我发出 POST 请求的完整代码:
RKResponseDescriptor *stateRD = [RKResponseDescriptor responseDescriptorWithMapping:[State mapping] method:RKRequestMethodPOST pathPattern:nil keyPath:@"Response.State" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
NSDictionary *sectionStepParams = [NSDictionary dictionaryWithObjectsAndKeys:sectionCodeString,@"1",lastSectionStepCode,@"2",_currentState,@"State",nil];
//Create Object Manager
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:baseurl];
[objectManager addResponseDescriptorsFromArray:@[stateRD]];
//Create Request Operation
RKObjectRequestOperation *requestOperation = [objectManager appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodPOST path:@"getnextstep" parameters:sectionStepParams];
//Set Request Operation Success/Fail block
[requestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"success %@",mappingResult.array);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"failed");
}];
注意:此服务需要一个状态对象并传回一个状态对象。我能够很好地取回一个状态对象(它的 JSON 是空的),问题只是为服务提供了一个正确的状态对象。
谢谢你!