首页 > 解决方案 > 升级到 Promisekit 6 后代码变得更加臃肿

问题描述

我有一些相当老的代码,现在必须为 Xcode 12.4 更新。我正在使用 PromiseKit 并且必须升级该代码以满足编译器的要求。现在我有点困惑/沮丧,因为我不得不添加不必要的代码以满足编译器的要求:

如果成功连接到服务器,我的代码必须做一些事情。请注意,我没有明确使用回调的结果,而且我以前products -> Void在第一行中使用过,并且在第一个闭包中没有返回语句。但是,现在我必须明确定义该loadProducts方法返回的内容。此外,我还必须添加一个 return 语句,这对于我的情况也不是必需的:

  1. result -> Promise<[Product]> in
  2. return .value(result)

以前这些in语句可以省略,但现在我必须重新声明该方法的内部工作原理loadProducts

这是代码

self.service?.loadProducts().then {  result -> Promise<[Product]> in
    vc.isSigningIn = false
    vc.dismiss(animated: true){
        HUD.flash(.success, delay: 0.5)
    }
    self.saveMoc()
    self.storeCredentials(domain: domain, username: username, password: password)
    
    return .value(result)
}.catch(policy: .allErrors) { error in
    print(error)
    vc.errorString = "An error occured"
}

我可能遗漏了一些东西,但为了使用新框架编译代码,我必须添加的内容感觉与直觉相反。

我也想知道为什么 swift 不能使用一些“推断魔法”来弄清楚这些承诺返回什么以及为什么必须重新声明

标签: swiftxcodeswift5xcode12promisekit

解决方案


推荐阅读