Я пытаюсь написать инициализатор для моего общего перечисления, который переводит enum Result для Alamofire и преобразует его в мой собственный тип результата. То, что я придумал следующий:Инициализация родового перечня 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)'
Явного указания общих аргументов избавляются от странной ошибки компилятора, но решения этого вопроса раскрывает еще страннее Segfault. Поиграв с ним еще немного, кажется, что ссылки на 'MyFramework' - вот что вызывает его. Любые мысли о том, почему это может быть так? Я обобщил свои выводы в своем ответе. – blau
Я не заметил, что когда я тестировал это, но тогда ваш код находится в более сложной среде, чем мой простой тестовый файл. Опять же, я думаю, вы должны найти ошибку на bugs.swift.org, чтобы кто-то мог взглянуть на нее (если это еще не известная проблема). – jtbandes
Будет; Я попытаюсь изолировать проблему до отправки отчета об ошибке. Спасибо за вашу помощь. – blau