使用多个基本 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)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用一个查询来解决 graphQL 中的多个 Rest 往返?
django-rest-framework 如何处理多个 URL 参数?