RESTKit:重用 objectManager 来制作后续的 POST
Posted
技术标签:
【中文标题】RESTKit:重用 objectManager 来制作后续的 POST【英文标题】:RESTKit: Reusing objectManager to make subsequent `POST` 【发布时间】:2014-05-16 05:14:13 【问题描述】:我正在使用以下代码进行 POST:
[self.objectManager postObject:invitation path:kPath parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
failure:^(RKObjectRequestOperation *operation, NSError *error)
];
第一次POST
s 很好;但是,当我尝试后续的POST
s 时,我收到以下错误:
*** Assertion failure in -[RKObjectManager addRequestDescriptor:], /Users/User/Documents...../Code/Network/RKObjectManager.m:766
2014-05-15 22:07:43.103 App[68071:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot add request descriptor: An existing descriptor is already registered for the class 'Entity' and HTTP method'*'.'
如何检测是否已添加请求/响应 descriptor
?重用descriptor
的正确做法是什么?为了避免崩溃,我还有什么需要清空或不做的吗?
【问题讨论】:
【参考方案1】:问题不在于 POST,问题在于您重复运行映射配置(每次您想要 POST)。
映射必须是唯一的(确定性的),因此不允许多次运行。您可以每次都删除它们,但这很浪费,所以实际上您应该在创建对象管理器时只加载它们一次,然后不要再这样做了。通过这种方式,您可以获得最佳重用。
【讨论】:
谢谢。有没有办法检查对象是否已经有映射? 您不应该需要 - 如果您在启动时配置映射然后不更改它们,那么设计上应该是正确的 我并不总是发布相同的对象。这意味着我有不同的实体。因此,根据我需要发布的实体,我需要更改映射。有没有更好的方法来处理这个问题? 您将不同种类的对象发布到同一个端点?这不是一个很好的休息网络服务 同一个url,但是POST和PUT的映射不同。以上是关于RESTKit:重用 objectManager 来制作后续的 POST的主要内容,如果未能解决你的问题,请参考以下文章