Ios 根据结果进行铸造时发生碰撞<;T>;对不相关的类型T总是失败的

Ios 根据结果进行铸造时发生碰撞<;T>;对不相关的类型T总是失败的,ios,swift,casting,crash,Ios,Swift,Casting,Crash,当我将我的singleResult(类型为Result)转换为FAQResult fileprivate var fAQS = [FAQ]() when(resolved: task).then { (result) -> Void in let singleResult:Result<FAQResult> = result.first! let whereItCrashes = singleResult as! FAQResult

当我将我的singleResult(类型为
Result
)转换为
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!
    }
fileprivate-var-fAQS=[FAQ]()
当(已解决:任务)。然后{(结果)->Void in
让singleResult:Result=Result.first!
让whereitcrash=singleResult作为!FAQResult
self.fAQS=whereitcrash.result!
}
从结果强制转换为不相关的类型FAQResult总是失败

下面的代码来自项目中使用的核心promise pod。它所做的一切都会给我一个.boolValue,但我需要将它从 将结果转换为常见问题解答结果

    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
        }
    }
}
公共枚举结果{
///履行
个案完成(T)
///拒绝
案例被拒绝(错误)
初始(uu分辨率:分辨率){
开关分辨率{
已完成的案例(let值):
self=.completed(值)
案例。被拒绝(错误为:
self=.rejected(错误)
}
}
/**
-返回:如果结果为“已完成”,则返回“true”;如果结果为“已拒绝”,则返回“false”。
*/
公共var布尔值:Bool{
切换自身{
案例.已完成:
返回真值
案例.驳回:
返回错误
}
}
}

关于如何使其正确投射的任何解决方案?

您可以向
结果添加新的计算属性
,如下所示:

/**
 - 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

错误消息非常清楚,您不能将结果强制转换为FAQResult,它们是不同的东西。这篇文章告诉您如何从enum获取关联的值