gpt4 book ai didi

swift - 如何链接完成?

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:06 25 4
gpt4 key购买 nike

在 Swift 中链式补全的最佳方式是什么?我正在使用从 API 获取一些信息的网络库。要获取我需要的信息:

授权 -> 获取类别列表 -> 获取论坛列表 -> 获取主题列表 ->

嵌套完成看起来很糟糕,有什么办法可以做得更好吗?我曾尝试使用 dispatch_sync,但没有成功。

示例代码:

    api.get_session_key(self.credentials) { (sessionKeyResult) -> () in
switch sessionKeyResult {
case .Success(let sessionKey):
// STEP 2

self.api.list_categories(self.credentials.userLogin, completion: { (surveysResult) -> () in
switch surveysResult {
case .Success(let surveys):

// STEP 3 and so on

case .Error(let error): completion(synced: Result.Error(error))
}
})

case .Error(let error):
completion(synced: Result.Error(error))
}
}

最佳答案

在我看来,您至少有 3 个选择:

  1. Facebook Bolts框架
  2. 任何 Functional Reactive Programming 框架,如 RxSwiftReactiveCocoa
  3. NSOperation

我建议您按此顺序考虑它们:)

FB Bolts 开销最小,恕我直言,最适合像链接操作这样的简单任务。它是用 Objective-C 编写的,但也适用于 Swift。

Functional Reactive Programming 概念很棒,但迫使您再次重新考虑您的应用程序架构并可能进行一些重构。如果这样做,链接操作将变得简单且非常优雅,特别是在 Swift 中。您还会发现许多任务,例如异步操作可以比命令式方式简单得多。

NSOperation 对我来说开销太大了。乍一看它看起来不错,但当您开始编码时,您会遇到很多事情崩溃,例如在某些操作之间传递参数或优雅的错误处理。

关于swift - 如何链接完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com