从 Result<T> 转换为无关类型 T 时崩溃总是失败
Crash when casting from Result<T> to unrelated type T always fails
当我将 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!
}
Cast from Result<FAQResult> to unrelated type FAQResult always fails
下面的代码来自项目中使用的 core-promise 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
}
}
}
关于如何让它正确投射的任何解决方案?
您可以像这样将新计算的 属性 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
会return你FAQResult
。
当我将 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!
}
Cast from Result<FAQResult> to unrelated type FAQResult always fails
下面的代码来自项目中使用的 core-promise 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
}
}
}
关于如何让它正确投射的任何解决方案?
您可以像这样将新计算的 属性 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
会return你FAQResult
。