Userクラスから2種類のPOSTを作成する必要があります。Restkitのあるクラスに2つのリクエストディスクリプタを追加する0.2
//JSON Type A
{
"password":"12345",
"email":"[email protected]"
}
//JSON Type B
{
"user":{
"Password":"12345",
"Email":"[email protected]"
}
}
私は2つの要求記述子を作ってみました、私のオブジェクトマネージャに追加しましたしかし、私はエラーが
「 既存の要求と同じオブジェクトクラスの要求記述を追加することはできません取得しますディスクリプタ。"
私のコード
@interface User : NSObject
@property (nonatomic, retain) NSString * userID;
@property (nonatomic, retain) NSString * email;
@property (nonatomic, retain) NSString * password;
@property (nonatomic, retain) NSString * firstName;
@property (nonatomic, retain) NSString * lastName;
@end
- (void)setupUserMapping:(RKObjectManager *)objectManager {
// Setup user response mappings
RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[User class]];
[userMapping addAttributeMappingsFromDictionary:@{
@"ID" :@"userID",
@"Email" : @"email",
@"Password" : @"password",
@"FirstName" : @"firstName",
@"LastName" : @"lastName",
}];
RKResponseDescriptor *responseDescriptorAuthenticate = [RKResponseDescriptor responseDescriptorWithMapping:userMapping
pathPattern:@"/Authenticate"
keyPath:nil
statusCodes:[NSIndexSet indexSetWithIndex:200]];
RKResponseDescriptor *responseDescriptorRegister = [RKResponseDescriptor responseDescriptorWithMapping:userMapping
pathPattern:@"/Register"
keyPath:nil
statusCodes:[NSIndexSet indexSetWithIndex:200]];
[objectManager addResponseDescriptor:responseDescriptorRegister];
[objectManager addResponseDescriptor:responseDescriptorAuthenticate];
// Setup user request mappings
RKObjectMapping* userRequestMappingForRegister = [RKObjectMapping requestMapping];
[userRequestMappingForRegister addAttributeMappingsFromDictionary:@{
@"email" : @"Email",
@"password" : @"Password",
@"firstName" : @"FirstName",
@"lastName" : @"LastName",
}];
RKRequestDescriptor *requestDescriptorForRegister = [RKRequestDescriptor requestDescriptorWithMapping:userRequestMappingForRegister objectClass:[User class] rootKeyPath:@"user"];
RKObjectMapping* userRequestMappingForAuthenticate = [RKObjectMapping requestMapping];
[userRequestMappingForAuthenticate addAttributeMappingsFromDictionary:@{
@"userID" :@"ID",
@"email" : @"email",
@"password": @"password"
}];
RKRequestDescriptor *requestDescriptorForAuthenticate = [RKRequestDescriptor requestDescriptorWithMapping:userRequestMappingForAuthenticate objectClass:[User class] rootKeyPath:nil];
[objectManager addRequestDescriptor:requestDescriptorForRegister];
[objectManager addRequestDescriptor:requestDescriptorForAuthenticate];
}
は、誰もが、私はこれらの要求のための別のクラスを作成せずに、この問題を解決することができる方法を知っていますか?
何か助けていただければ幸いです。
ありがとうございました。
ありがとう!私はそれが共通の問題になることを願っています! =) –
Blake - 私は最近同じ問題を抱えていて、2つのObjectManagerインスタンスを使用しました。これが推奨されるベストプラクティスですか? – bobtheowl2
"これは一般的な問題であれば、リクエスト記述子にパスマッチングを追加することができます" - これは機能提案と見なすことができる場合は+1します:) – MrTJ