RESKit:无响应描述符

Posted

技术标签:

【中文标题】RESKit:无响应描述符【英文标题】:RESKIt: No Response Descriptor 【发布时间】:2014-04-08 19:37:56 【问题描述】:

我正在使用下面的代码发布 managedObject。从服务器,除了 200 之外,我没有得到任何返回,因此没有响应对象的映射。

[self.objectManager postObject:invitation path:@"/path" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
        NSLog(@"success");
     failure:^(RKObjectRequestOperation *operation, NSError *error) 
        NSLog(@"Failure");
    ]; 

是否有可以用于 RKResponseDescriptor 的虚拟格式?

RKResponseDescriptor *responseDescriptor = nil;  //causes a crash

【问题讨论】:

【参考方案1】:

没有“虚拟”RKResponseDescriptor 实例,您必须明确定义您希望 RestKit 对响应数据做什么。

您的响应描述符可以是部分的,因此它只映射一个字段以证明一切正常。

或者,您可以使用动态映射来读取传入数据中的键,并创建到 NSMutableDictionary 的映射,其中包括所有键。

这两件事只对测试有用,但可能对您有所帮助。

如果响应实际上没有正文数据并且您只想监视成功,那么您可以使用 AFNetworking 代替,或者创建映射到 NSMutableDictionary 并且没有键的响应描述符。 RestKit 应该接受它,并且它应该作为你的目的的“虚拟”。它将创建一个从未使用过的字典实例,但您可以忽略它。


RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
                                                                                        method:RKRequestMethodPOST
                                                                                   pathPattern:@"/path"
                                                                                       keyPath:nil
                                                                                   statusCodes:[self statusCodeSuccess]];

【讨论】:

谢谢。如果返回的唯一内容是 200,我如何将某些内容映射到它? 哦,我明白了,没有响应正文数据——那么你不应该使用 RestKit。您应该直接使用 AFNetworking(这就是 RestKit 在后台使用的)。 嗯,在我的大部分通话中,我都会收到响应数据。但在这种情况下,我不是。如何使用 AFNetworking 发布上面的代码块? 嗯,AFNetworking 提供了一个非常相似的 POST 方法,但是你需要让 RestKit 为你做序列化。使用映射到NSMutableDictionary 并且没有键的响应描述符可能会更好。 RestKit 会接受它,它应该充当你的目的的“虚拟”。它将创建一个字典实例,但您可以忽略它...

以上是关于RESKit:无响应描述符的主要内容,如果未能解决你的问题,请参考以下文章

为啥有响应与无响应的 MTU 不同?

iOS-BLE <CBCharacteristic:未指定“无响应写入”属性 - 忽略无响应写入

使用 HighCharts 的条形图无响应脚本和/或高响应时间

SnowSql 无响应

什么会导致 GPIB 无响应

ckeditor 使页面无响应