Ios 最佳RestKit设置
我想在我的应用程序上使用RestKit 0.20,但我有点搞不清楚这些部件是如何组合在一起的。每个my view控制器都需要从服务器获取数据,每个控制器在服务器上都有自己的路由,并返回不同的对象。我想让所有服务器请求远离视图控制器,这样我就可以集中管理它们,但如果有必要,可以打开另一个设置。现在我有以下设置,但我非常确定有更好的方法使用RKObjectManager和RKRouter: 1每个视图控制器在专用于它的网关对象中触发一个方法 2该方法将创建请求和响应映射。然后是请求和响应描述,最后是使用手动创建的NSURL的请求操作 3在成功块中,我将响应传递给视图控制器,并发送NSNOTITIONG 有更好的设置吗?我可以只使用一个RKObjectManager来处理所有请求吗?这是怎么回事?我是否将其放在网关中的单独方法中?是否有更好的方法返回到我的视图控制器,然后通知Ios 最佳RestKit设置,ios,restkit,restkit-0.20,Ios,Restkit,Restkit 0.20,我想在我的应用程序上使用RestKit 0.20,但我有点搞不清楚这些部件是如何组合在一起的。每个my view控制器都需要从服务器获取数据,每个控制器在服务器上都有自己的路由,并返回不同的对象。我想让所有服务器请求远离视图控制器,这样我就可以集中管理它们,但如果有必要,可以打开另一个设置。现在我有以下设置,但我非常确定有更好的方法使用RKObjectManager和RKRouter: 1每个视图控制器在专用于它的网关对象中触发一个方法 2该方法将创建请求和响应映射。然后是请求和响应描述,最后是
抱歉,如果其中一些是非常基本的 以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
}];