gpt4 book ai didi

ios - 使用 RestKit 0.20 在集合上自定义请求映射

转载 作者:行者123 更新时间:2023-11-29 03:56:35 26 4
gpt4 key购买 nike

我正在尝试找到一种方法,将对象集合正确映射到具有特定格式的 JSON 字典。

我有一个具有以下接口(interface)(部分)的对象:

@interface Reward : NSObject
...
@property (nonatomic, copy) NSString* title;
@property (nonatomic, copy) NSString* comment;
@property (nonatomic, strong) NSMutableOrderedSet* receivers; //set of User
...
@end

用户对象(部分)是:

@interface User : NSManagedObject
...
@property (nonatomic, strong) NSNumber* userId
...
@end

目标是 POST 奖励对象以及接收者属性。

我可以想出一个适用于 titlecomment 属性的 RKObjectMapping,但是 receivers 集合需要以下格式:

"receivers":{"0":"<user_id_of_first_user>", "1":"<user_id_of_second_user>", ...}

我的主要问题是如何将索引作为键插入。

我可以手动完成并调整 NSURLRequest HTTPBody,但我希望找到一种更干净/RestKit 的方式。

提前致谢。

最佳答案

如果你想这样做,正如你所说,使用 NSMutableURLRequest 并添加你的奖励方法请求,该请求为 NSString 提供你的 json,这个简单的代码可以帮助你和像我这样的其他开发人员:

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[RKObjectManager baseUrl]];
Reward *reward = [[Reward alloc] init];
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Reward class]];
RKResponseDescriptor *desc = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodPOST pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[manager addResponseDescriptor:desc];
RKObjectManager *objectManager = [RKObjectManager sharedManager];
NSMutableURLRequest *request =
[objectManager requestWithObject:reward method:RKRequestMethodPOST path:@"yourpath" parameters:nil];
NSString *str = [NSString stringWithFormat:@"\"receivers\":%@",reward.request];
[request setHTTPBody:[str dataUsingEncoding:NSUTF8StringEncoding]];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[desc]];
[operation setCompletionBlockWithSuccess:success failure:failure];
operation.targetObject = reward;
[operation start];

希望对大家有帮助

关于ios - 使用 RestKit 0.20 在集合上自定义请求映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16414438/

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