swift - 升级到 Promisekit 6 后代码变得更加臃肿
问题描述
我有一些相当老的代码,现在必须为 Xcode 12.4 更新。我正在使用 PromiseKit 并且必须升级该代码以满足编译器的要求。现在我有点困惑/沮丧,因为我不得不添加不必要的代码以满足编译器的要求:
如果成功连接到服务器,我的代码必须做一些事情。请注意,我没有明确使用回调的结果,而且我以前products -> Void
在第一行中使用过,并且在第一个闭包中没有返回语句。但是,现在我必须明确定义该loadProducts
方法返回的内容。此外,我还必须添加一个 return 语句,这对于我的情况也不是必需的:
result -> Promise<[Product]> in
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 不能使用一些“推断魔法”来弄清楚这些承诺返回什么以及为什么必须重新声明
解决方案
推荐阅读
- aerospike - 如何更新 aql (aerospike) 中的列表属性?
- javascript - Javascript - 比较 loaction.pathname 与 or 运算符不按预期工作
- python - 使用 url 重写创建一个 python 代理服务器
- html - 当我创建的第一个网站的字体不匹配时,如何解决字体问题
- c# - 如何使用 Xamarin 从 Xamarin.Forms.ItemTappedEventArgs e 上的 e.Item 获取值
- data-analysis - 我应该使用什么插补方法?
- blogger - 如何仅在博客中将帖子标题从 rtl 改为 ltr
- python - Pandas 手动计算均值或标准差
- amazon-web-services - AWS 跨区域复制和 AWS KMS 客户托管密钥
- python - 当模式不可用时如何从列表中打印最小的数字?