RestKit ActivityIndi​​cator用于多个请求

时间:2011-11-15 15:36:59

标签: ios uiactivityindicatorview restkit

我有一个IBAction,可以通过iPad App中的按钮调用。

IBaction然后调用三种不同的方法来启动RestKit请求。

检查所有三个请求检索对象的最佳方法是什么?

目标是显示带有第一个请求的activityIndi​​cator,并通过检索所有三个请求的对象来停止/隐藏activityIndi​​cator。

我是RestKit的新手,所以如果这是一个太简单的问题,请原谅我。我试图在RestKit API的帮助下自己找到解决方案 - 文档。

2 个答案:

答案 0 :(得分:4)

我想你使用异步请求。一个简单的解决方案是检查RKObjectLoderDelegate的{​​{1}}方法是否已加载所有数据。

启动RestKit请求时,您可以在请求中添加一个“标记”(在RestKit中称为- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects),然后在委托回调中检索该标记。

例如,您可以实现以下逻辑:

创建请求时,请为每个请求添加特定的用户数据:

userData

并检查RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self]; [loader setUserData:@"FirstRequest"]; ... RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self]; [loader setUserData:@"ThirdRequest"];

中的标签
didLoadObjects:

加载请求时不要忘记处理错误情况。

或者,如果此方法不适合您的方案 - 您可以在单独的队列中添加和管理请求。跟踪进度。如果您需要有关第二个选项的更多信息,请告诉我。

答案 1 :(得分:1)

有一种简单的方法,在objectLoader委托中,你可以使用objectLoader这样的内置函数:

- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects {

    if ([objectLoader wasSentToResourcePath:@"/path1"]) {
       //handle request for /path1  
       //objects are loaded for request1        

    } else if ([objectLoader wasSentToResourcePath:@"/path2"]){
       //handle request for /path2
       //objects are loaded for request2      

    } else if ([objectLoader wasSentToResourcePath:@"/path3"]){
      //handle request for /path3
      //objects are loaded for request3      

   }
}

就是这么简单。