如何在请求中使用 NSStrings 映射 NSArray (RESTKit)

Posted

技术标签:

【中文标题】如何在请求中使用 NSStrings 映射 NSArray (RESTKit)【英文标题】:How to map a NSArray with NSStrings in the request (RESTKit) 【发布时间】:2013-05-24 15:12:10 【问题描述】:

我在 Restkit 0.20 中遇到了请求映射问题。我想将一个带有 NSStrings 的 NSArray 放入请求中的“邮件”键下,例如:

mails:[@"first@gmail.com",@"second@gmail.com"]

因此,对于这种情况,我真的不需要对象映射,因为我只使用标准对象。我只是没有让它工作,所以我切换回常规方式(至少对我来说) - 引入一个包含 NSArray 的 DTO 对象 MailRequest。我是这样做的:

RKObjectMapping* mapping =  [RKObjectMapping requestMapping];
[mapping addAttributeMappingsFromDictionary:@
        @"mails":@"mails"
];  

RKRequestDescriptor *reqDesc = 
            [RKRequestDescriptor requestDescriptorWithMapping:mapping
                                                  objectClass:[MailRequest class]
                                                  rootKeyPath:nil];

RKObjectManager *manager = ...
...
NSMutableURLRequest *request = [manager requestWithObject:requestObject 
                                                   method:RKRequestMethodPOST 
                                                     path:urlString parameters:nil];

RKObjectRequestOperation *operation = 
                     [manager objectRequestOperationWithRequest:request ...

...但我想摆脱 MailsRequest DTO 对象。这可能吗?

【问题讨论】:

如果您的对象与其他对象具有数组关系,该对象应具有字符串作为属性。显示存储字符串的数据结构。 嗨,我不想像在我的示例中那样使用对象(如 MailsRequest)。相反,我想将数组直接放入请求中。 那么为什么不自己创建 JSON 和 NSURLRequest(使用 JSON 数据),然后传递给 RKObjectRequestOperation 呢? 听起来不错,有小例子吗? 【参考方案1】:

跳过映射步骤,只需使用 RestKit 进行发送和任何响应映射。以您想要的任何方式构建您的字典。您确实需要从 urlString 创建 URL。

NSDictionary *mails = @mails:@[@"first@gmail.com",@"second@gmail.com"];
NSError *error = nil;
NSData *mailsJSON = [NSJSONSerialization dataWithJSONObject:mails options:0 error:&error];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:mailsJSON];

RKObjectRequestOperation *operation = [manager objectRequestOperationWithRequest:request ...

【讨论】:

以上是关于如何在请求中使用 NSStrings 映射 NSArray (RESTKit)的主要内容,如果未能解决你的问题,请参考以下文章

如何制作一个NSStrings数组? [复制]

如何从 NSStrings 数组中填充选择器视图?然后我将如何访问所选择项目的价值?

带有NSStrings数组的RLMObject

如何找到两个 NSStrings 的共同模式?

我可以在 iphone 目标 c 的警报中使用 NSStrings 吗?

如何将NSArray排序的NSStrings拆分为NSMutableArray的NSMutableArray