使用多个基本 URL 和多个对象管理器 (RestKit)

Posted

技术标签:

【中文标题】使用多个基本 URL 和多个对象管理器 (RestKit)【英文标题】:Using Multiple Base URLs and Multiple Object Managers (RestKit) 【发布时间】:2014-03-01 15:38:32 【问题描述】:

我正在尝试在一个 ios 应用中使用两个 API。

我正在使用 RestKit 并按照本文的指南进行操作:https://github.com/RestKit/RestKit/wiki/Using-Multiple-Base-URLs-(and-Multiple-Object-Managers)

我该怎么做而不是这段代码中的retain,因为它不再是一个选项?

AppDelegate.m

RKObjectManager *flickrManager = 
        [RKObjectManager objectManagerWithBaseURL:flickrBaseUrl]; // <-- shared singleton
RKObjectManager *foursquareManager = 
        [[RKObjectManager objectManagerWithBaseURL:foursquareBaseUrl] retain]; // <-- you must retain every other instance.

【问题讨论】:

【参考方案1】:

您希望将所有对象管理器存储在某个地方。如果使用不保留的 ARC,则希望存储在数组/字典(可能带有 URL 的键)/属性(强)中。

在您显示的示例代码中,没有保留第一个对象管理器,因为 RestKit 为您保存一个引用(单例)。通常,当使用多个对象管理器时,您希望忽略单例存储并自己管理所有对象管理器引用。

我建议使用数据控制器,它在内部隐藏对象管理器属性,而是根据您的数据模型对象公开 API。在内部,它可以为收到的每个请求选择适当的对象管理器。

【讨论】:

谢谢!你有一个链接到你的第三段关于如何做的任何事情吗?从概念上讲,我了解您的用途,但从未这样做过- 目前我已经设置了模型。然后我还有一个视图控制器。你说的是这个吗? 我说的是从 RestKit 类中抽象出视图控制器。所以视图控制器只是想获取一些数据或保存一些数据。数据控制器在这些术语中提供了一个接口,它使 RestKit 请求对请求进行操作。没有关于这方面的文档(据我所知)。 所以专门说这个AppDelegate,我是不是直接把代码中的retain去掉? 删除保留,是的,但是你需要像self.foursquareManager = foursquareManager; 这样的东西才能保留实例(通过强属性)。

以上是关于使用多个基本 URL 和多个对象管理器 (RestKit)的主要内容,如果未能解决你的问题,请参考以下文章

如何根据授权服务器的传入 URL 配置多个身份验证管理器?

网络应用和基本原理

如何使用一个查询来解决 graphQL 中的多个 Rest 往返?

django-rest-framework 如何处理多个 URL 参数?

django-rest-framework- 使用“或”过滤来自一个 url 参数的多个值

如何使用django管理员多对多个字段选择器小部件