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:无响应描述符的主要内容,如果未能解决你的问题,请参考以下文章
iOS-BLE <CBCharacteristic:未指定“无响应写入”属性 - 忽略无响应写入