gpt4 book ai didi

ios - 在 Restkit 0.2 中为给定类添加两个请求描述符

转载 作者:技术小花猫 更新时间:2023-10-29 11:05:29 24 4
gpt4 key购买 nike

我需要从 User 类创建两种不同类型的 POST。

//JSON Type A
{
"password":"12345",
"email":"test@gmail.com"
}

//JSON Type B
{
"user":{
"Password":"12345",
"Email":"sample@gmail.com"
}
}

我试图创建两个请求描述符并将它们添加到我的对象管理器中,但是我得到了错误

"Cannot add a request descriptor for the same object class as an existing request descriptor."

我的代码

@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];
}

有谁知道如何在不为这些请求创建单独的类的情况下解决这个问题?

感谢任何帮助。

谢谢。

最佳答案

您可以使用动态映射来切换序列化行为。如果这是一个足够普遍的问题,我们可以想象将路径匹配添加到请求描述符。我只是没有收到大量关于此类功能的请求。

在单元测试中有一个如何使用请求动态映射的例子:https://github.com/RestKit/RestKit/blob/master/Tests/Logic/ObjectMapping/RKObjectParameterizationTest.m#L495-L534

关于ios - 在 Restkit 0.2 中为给定类添加两个请求描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14180074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com