Ios 最佳RestKit设置

Ios 最佳RestKit设置,ios,restkit,restkit-0.20,Ios,Restkit,Restkit 0.20,我想在我的应用程序上使用RestKit 0.20,但我有点搞不清楚这些部件是如何组合在一起的。每个my view控制器都需要从服务器获取数据,每个控制器在服务器上都有自己的路由,并返回不同的对象。我想让所有服务器请求远离视图控制器,这样我就可以集中管理它们,但如果有必要,可以打开另一个设置。现在我有以下设置,但我非常确定有更好的方法使用RKObjectManager和RKRouter: 1每个视图控制器在专用于它的网关对象中触发一个方法 2该方法将创建请求和响应映射。然后是请求和响应描述,最后是

我想在我的应用程序上使用RestKit 0.20,但我有点搞不清楚这些部件是如何组合在一起的。每个my view控制器都需要从服务器获取数据,每个控制器在服务器上都有自己的路由,并返回不同的对象。我想让所有服务器请求远离视图控制器,这样我就可以集中管理它们,但如果有必要,可以打开另一个设置。现在我有以下设置,但我非常确定有更好的方法使用RKObjectManager和RKRouter:

1每个视图控制器在专用于它的网关对象中触发一个方法

2该方法将创建请求和响应映射。然后是请求和响应描述,最后是使用手动创建的NSURL的请求操作

3在成功块中,我将响应传递给视图控制器,并发送NSNOTITIONG

有更好的设置吗?我可以只使用一个RKObjectManager来处理所有请求吗?这是怎么回事?我是否将其放在网关中的单独方法中?是否有更好的方法返回到我的视图控制器,然后通知


抱歉,如果其中一些是非常基本的

以Instagram为例,我建议采用以下结构:

1首先,根据您使用的资源(如用户/评论/喜好等)拆分您的所有请求

2为每个资源创建一个单独的类,即RKObjectManager的子类,例如UsersManager、CommentsManager、LikesManager,所有这些都是从RKObjectManager继承的

3在每个管理器上定义额外的方法,您将从视图控制器使用这些方法。 例如,对于为用户加载likes资源,您可以在likemanager或UserManager中定义此方法-这是一个非常固执己见的决定,这完全取决于您

- (void)loadLikesForUser:(User *)user
                 success:(void (^)(NSArray *likes))successCallback
                 failure:(void (^)(NSError *error))failureCallback;
4实现此方法并使用self调用适当的方法,因为您已经创建了RKObjectManager类的子类,并且可以访问所有基本方法

5在视图控制器中,您可以将其称为

    [[LikesManager sharedManager] loadLikesForUser:user success:^(NSArray *likes) {
        self.likes = likes;
        // work with likes
    } failure:^(NSError *error) {
        // handle error
    }];
请注意,您没有对NSNotification执行任何操作,因为在这种情况下,这将是一个糟糕的设计决策

一般来说,如果请求很少,可以将所有请求放在RKObjectManager的子类中,但如果请求超过5-6个,则会发现将所有请求保存在一个文件中既繁琐又困难。这就是为什么我建议根据资源来拆分它们

更新 根据评论中提出的问题,在此处提供答案

在哪里设置基本URL

基本URL是RKObjectManager实例的一个属性,所以在向API发出任何请求之前,您一定要设置它。对我来说,理想的位置是RKObjectManager实例的初始化

b在哪里定义对象映射

再说一次,这取决于你。这个问题的答案是非常固执己见的。我会考虑2个选项:

创建一个单独的类来保存与映射相关的所有对象,如MappingProvider。然后,无论何时创建RKResponseDescriptor或RKRequestDescriptor,都只需访问MappingProvider的属性即可获得映射。 在manager的类中定义映射,因为您将把它们分配给将在此manager中使用的RKResponseDescriptor实例。
更新:查看关于RestKit设置的这篇博文:

Wow!这比我考虑的任何事情都要干净得多。虽然我刚刚花了几个小时来回答你的问题,但有些问题我还是有点不知所措。我想我知道如何使用块进行回调,但我在哪里设置映射和基本URL?更新响应以包括对您的问题的回答
    [[LikesManager sharedManager] loadLikesForUser:user success:^(NSArray *likes) {
        self.likes = likes;
        // work with likes
    } failure:^(NSError *error) {
        // handle error
    }];