当我将singleResult(类型Result<FAQResult>
)投射到FAQResult
fileprivate var fAQS = [FAQ]()
when(resolved: task).then { (result) -> Void in
let singleResult:Result<FAQResult> = result.first!
let whereItCrashes = singleResult as! FAQResult
self.fAQS = whereItCrashes.result!
}
从结果&lt; FAQResult&gt;投射不相关的类型FAQResult总是失败
下面的代码来自项目中使用的核心承诺pod。所有这一切都给了我一个.boolValue,但我需要转换它 对FAQResult的结果。
public enum Result<T> {
/// Fulfillment
case fulfilled(T)
/// Rejection
case rejected(Error)
init(_ resolution: Resolution<T>) {
switch resolution {
case .fulfilled(let value):
self = .fulfilled(value)
case .rejected(let error, _):
self = .rejected(error)
}
}
/**
- Returns: `true` if the result is `fulfilled` or `false` if it is `rejected`.
*/
public var boolValue: Bool {
switch self {
case .fulfilled:
return true
case .rejected:
return false
}
}
}
有关如何正确投射的任何解决方案吗?
答案 0 :(得分:0)
您可以将新的计算属性value
添加到Result<T>
,如下所示:
/**
- Returns: actual fulfilled `value` if the result is `fulfilled` or `nil` if it is `rejected`.
*/
public var value: T? {
switch self {
case .fulfilled(let value):
return value
case .rejected:
return nil
}
}
然后singleResult.value
会返回FAQResult
。