我想为我的泛型枚举编写一个初始化器,它需要Alamofire的通用Result枚举并将其转换为我自己的Result类型。我想出来的是这样的:从另一个泛型枚举初始化一个通用的Swift枚举?
public enum Result<Value, Error: ErrorType> {
case Success(Value)
case Failure(Error)
public init(result: Alamofire.Result) {
switch(result) {
case Alamofire.Result.Success(let val):
self = MyFramework.Result.Success(val)
case Alamofire.Result.Failure(let err):
self = MyFramework.Result.Failure(err)
}
}
}
但是我遇到了以下错误:
Cannot invoke 'Success' with an argument list of type '(Value)'
明确指定通用参数可以消除奇怪的编译器错误,但解决该问题会揭示甚至更怪异的段错误。在更多地使用它之后,似乎引用“MyFramework”是导致它的原因。任何想法,为什么可能是这种情况?我在回答中总结了我的发现。 – blau
我没有注意到当我测试这个时,但是那时你的代码处在比我简单的测试文件更复杂的环境中。再次,我认为你应该在bugs.swift.org上提交一个bug,这样有人可以看一下它(如果它还不是已知的问题)。 – jtbandes
会做什么;我将在提交错误报告之前尝试进一步分析问题。谢谢你的帮助。 – blau