如何在方法签名中表达Result <value,error:=“”errortype =“”>

时间:2015-11-09 18:54:35

标签: swift alamofire

我一直在尝试将Alamofire从2.0升级到3.0。其中一种方法包含此签名:

func standardResponse(request: NSURLRequest?, response: NSHTTPURLResponse?, result: Result<AnyObject>, success: (object: AnyObject?) -> Void, failure: (error: ServerError) -> Void)

指向Result<AnyObject>时出现错误,说明generic type 'Result' specialized with too few type parameters (got 1, but expected 2)

好吧,所以我输入2.根据Alamofire 3.0 migration guide结果已更改为容纳额外的Error: ErrorType参数。我接下来尝试了这个:

Result<AnyObject, Error>

这次错误是Error does not conform to protocol ErrorType

也许这个?

Result<AnyObject, Error: ErrorType>

没有雪茄。请帮我理解。

1 个答案:

答案 0 :(得分:2)

looks like第二个参数必须是符合ErrorType的对象。

所以你可以用例如这样的枚举创建你自己的错误类型:

enum MyErrorType: ErrorType { 
    case SomeError 
    case SomeOtherError 
}

然后按照编译器要求的方式使用它:

Result<AnyObject, MyErrorType>