Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Swift同步API调用_Objective C_Swift_Grand Central Dispatch - Fatal编程技术网

Objective c Swift同步API调用

Objective c Swift同步API调用,objective-c,swift,grand-central-dispatch,Objective C,Swift,Grand Central Dispatch,我必须一个接一个地对服务器进行三个API调用(同步)。只有在第一个API成功的情况下,才需要调用第二个API。如果第一个API失败,那么我必须停止流,并显示另一个带有重试和取消的UIViewController。我应该使用什么以及如何使用 使用将对您有所帮助,以下是如何做到这一点: let queue = OperationQueue() let session = URLSession(configuration: URLSessionConfiguration.default) let fi

我必须一个接一个地对服务器进行三个API调用(同步)。只有在第一个API成功的情况下,才需要调用第二个API。如果第一个API失败,那么我必须停止流,并显示另一个带有重试和取消的
UIViewController
。我应该使用什么以及如何使用

使用将对您有所帮助,以下是如何做到这一点:

let queue = OperationQueue()
let session = URLSession(configuration: URLSessionConfiguration.default)
let firstOperation = TRVSURLSessionOperation(session: session, request: URLRequest(url: URL(string: "first url")!)) { (data, response, error) in
  // Your completion logic
}
let secondOperation = TRVSURLSessionOperation(session: session, request: URLRequest(url: URL(string: "second url")!)) { (data, response, error) in
  // Your completion logic
}
secondOperation?.addDependency(firstOperation!)
queue.addOperations([firstOperation!, secondOperation!], waitUntilFinished: false)

使用Operation Queue并使用OperationQueue管理依赖项您的问题有多个解决方案。以下是您应该查找的一些关键字:
NSOperation
、GCD、期货和承诺、异步/等待模式。苹果处理这一问题的方式是依赖于其他操作的操作。承诺的使用在这些任务中非常流行,最后,异步/等待可能是实现承诺的最干净(认知负载方面)的方法(我建议您首先检查)