Ios 根据结果进行铸造时发生碰撞<;T>;对不相关的类型T总是失败的
当我将我的singleResult(类型为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
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获取关联的值