代码之家  ›  专栏  ›  技术社区  ›  Alex Stone

iOS RXSwift如何从中获取价值。成功的结果?

  •  0
  • Alex Stone  · 技术社区  · 7 年前

    获取关联值的正确语法是什么。RXSwift的成功结果?

    .map{ (result : Result<Double>) -> Double in
            //how to get duration from result? this does not work
            let duration : Double = result.success.value
            return duration
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Alex Stone    7 年前

    添加通用扩展:

    enum Result<T> {
        case success(T)
        case failure(Error)
    }
    
    extension Result {
    
        var successResult: T? {
            guard case let .success(value) = self else { return nil }
            return value
        }
    }
    

    通过以上步骤,您可以:

    result.successResult.map { duration in 
        // do something with duration
    }
    
        2
  •  0
  •   SmileBot    4 年前

    Swift中的Result有一个get()函数,该函数将成功值作为抛出表达式返回。所以你可以称之为:

    var successVal = try? result.get()