NSError.setUserInfoValueProvider(forDomain:provider:)
был представлен в MacOS 10.11 / iOS 9 как способ заполнения словаря userInfo
для NSError
для данной области ошибок с использованием блока, что позволяет избежать большого количества шаблонов и повторение в коде, который может выдать.
Я пытался использовать это так:
if NSError.userInfoValueProvider(forDomain: "Test") == nil {
NSError.setUserInfoValueProvider(forDomain: "Test"){ err, userInfoKey in
print("This is an error:", err, userInfoKey)
return nil
}
}
Сайт вызова выглядит так:
throw NSError(domain: "Test", code: 0, userInfo: nil)
Когда выдается ошибка, журнал заполняется «Это ошибка:», но сама ошибка или userInfoKey
никогда не распечатывается. Программа окончательно прерывается с последним сообщением в журнале:
предупреждение: не удалось выполнить код поддержки для чтения данных класса Objective-C
в процессе. Это может снизить качество информации о типе
имеется.