RestKit を使用して POST リクエストを作成しています。簡単な POST リクエストを正常に行うことができます。これには、単純な NSString を持つパラメーターが含まれます。残念ながら、パラメータに OBJECTS が必要な場合、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 は空です)。問題は、サービスに適切な状態オブジェクトを与えることだけです。
ありがとう!