Ios 使用RestKit同时调用两个Web服务

Ios 使用RestKit同时调用两个Web服务,ios,objective-c,web-services,restkit,Ios,Objective C,Web Services,Restkit,您好,我是第一次使用Restkit,能够正确地调用Web服务,但是有一种情况,我必须在一个viewcontroller上调用两个Web服务,才能从服务器获取所需的所有数据 例如:我有一个服务提供userProfile数据,第二个我必须调用userLevelType 现在我正在调用第一个webservices,当我得到数据时,它会给我useprofile,我正在调用第二个webservices userLevelType,但我想同时调用这两个服务 有没有办法一次调用两个不同的web服务 我正在使用

您好,我是第一次使用Restkit,能够正确地调用Web服务,但是有一种情况,我必须在一个viewcontroller上调用两个Web服务,才能从服务器获取所需的所有数据 例如:我有一个服务提供userProfile数据,第二个我必须调用userLevelType

现在我正在调用第一个webservices,当我得到数据时,它会给我useprofile,我正在调用第二个webservices userLevelType,但我想同时调用这两个服务

有没有办法一次调用两个不同的web服务

我正在使用RKobjectRequestOperation来调用webservices,那么是否可以创建一个队列或一些我不知道的其他解决方案


感谢您的帮助。

您正在处理一个异步系统,该系统正在访问基于网络的资源。“同时”几乎是不可能的

RestKit
将按照您给出的顺序对请求进行排队

如果您的请求是顺序相关的,那么您需要像这样通过完成块将它们链接在一起

RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

        [self runNextRequestWhichIsDependantOnDataFromThisRequest];

    };

RequestOperationFailBlock failureblock = ^(RKObjectRequestOperation *operation,  NSError *error){

        //deal with failure

    };


[[RKObjectManager sharedManager] getObjectsAtPath:@"my/path" parameters:someParams success:successblock failure:failureblock];
如果它们不是依赖项,请在两个成功块中使用条件来继续您的流程

RequestOperationSucessBlock successblock = ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

        if(theOtherOperationHasCompleted) {

           [self carryOnWithFlowNowThatBothOperationsAreDone];
        }

    };

使用对象管理器控制您处理的请求操作。使用
enqueueObjectRequestOperation:
将处理传递给对象管理器。访问对象管理器的
operationQueue
,以便调用
setMaxConcurrentOperationCount:
来限制正在运行的并发进程的数量(您在任何时候都不应该有超过4或5个进程)。

RestKit已经有一个队列。显示当前如何执行请求操作的代码。事实并非如此。计算机一直在执行多任务。OP也直接使用RK操作,而不是使用对象管理器。但同时接收两个独立网络呼叫的可能性非常小。OP不应该指望这样的事情发生。实际上,将得到0到2个响应。更好的描述是:请求可以并发运行,而不是按顺序运行,但不依赖于每个请求何时完成。RestKit不会按照请求的顺序对请求进行排队(除非您将其配置为)。