Если у меня есть метод метания, например:
func doSomethingWithString(string:String) throws {
guard string.characters.count > 0 else {
throw NSError(domain: "CustomErrorDomain", code: 42, userInfo: ["foo" : "bar"])
}
// Do something with string...
}
Затем я пытаюсь вызвать его и прочитать userInfo
:
do {
try doSomethingWithString("")
} catch let error as NSError {
print(error.domain)
print(error.code)
print(error.userInfo)
}
... он возвращается как пустой словарь (но домен и код заполнены правильно):
CustomErrorDomain
42
[:]
Но если я добавлю этот дополнительный шаг:
do {
try doSomethingWithString("")
} catch let e {
let error = e as NSError
print(error.domain)
print(error.code)
print(error.userInfo)
}
...оно работает:
CustomErrorDomain
42
[foo: bar]
Кто-нибудь знает, почему это может быть?
К вашему сведению - я использую Xcode 7 beta 2 (7A121l)