В Swift 2.0 NSError
соответствует протоколу ErrorType
.
Для специально определенной ошибки мы можем указать ассоциирующий объект для некоторых случаев, например ниже.
enum LifeError: ErrorType {
case BeBorn
case LostJob(job: String)
case GetCaughtByWife(wife: String)
...
}
Мы можем с комфортом сделать следующее:
do {
try haveAffairWith(otherPerson)
} catch LifeError.GetCaughtByWife(let wife) {
...
}
Однако, если мы хотим, чтобы он переходил в другие места как NSError
, он теряет информацию об ассоциированных объектах.
println("\(LifeError.GetCaughtByWife("Name") as NSError)")
печатает:
Error Domain=... Code=1 "The operation couldn't be completed". (... error 1)
а его userInfo
- nil
.
Где мой wife
, связанный с ErrorType
?