Какие поля показывает -[nsresponder presentError:]?
Есть ли какая-либо документация о том, как -[NSResponder presentError:]
метод работает? Я пытаюсь создать экземпляры NSError
в моей библиотеке, значения userInfo
которых показывают как можно больше полезной информации для пользователя. У меня сейчас трудное время.
Я начал использовать только NSLocalizedFailureReasonErrorKey
. Видя, что он присвоил messageText
свойство сгенерированного NSAlert
(жирный шрифт, самая верхняя метка), я затем попытался добавить NSLocalizedDescriptionKey
, который, как я думал, затем заполнит свойство informativeText
, для не полужирного объяснения под ним. Я также добавлена NSURLErrorKey
, так как эта библиотека имеет дело с файлами, и это было бы полезно.
Результирующий NSAlert
вообще не показывает исходное NSLocalizedFailureReasonErrorKey
значение, а новый NSLocalizedDescriptionKey
теперь становится messageText
. Он также не раскрывает NSURLErrorKey
вообще.
Является ли моей единственной возможностью написать свой собственный метод представления ошибок и частный случай домена этой библиотеки?
1 ответ:
Как ключи
Он включает в себя диаграмму, детализирующую, что куда идет. Как отмечают документы:NSError
взаимодействуют сpresentError:
, описано в руководстве по программированию обработки ошибок в разделелокализованная информация об ошибках .Причина отказа
Краткое предложение, объясняющее причину, по которой произошла ошибка. Обычно это часть описания ошибки. Методы, такие как presentError: не отображают автоматически причину сбоя, поскольку она уже включена в описании ошибки. Причина сбоя - для клиентов, которые хотят только показать причину сбоя.
Если вы хотите изменить порядок полей в объекте
NSError
до представления, это лучше всего сделать путем переопределенияwillPresentError:
, чтобы вернуть скорректированный объект ошибки.Что касается таких полей, как
NSURLErrorKey
, то предполагается, что вы включили его вNSLocalizedDescriptionKey
илиNSLocalizedRecoverySuggestionErrorKey
, Если хотите его отобразить. Хотя это и называется "предложением восстановления", документация является явной что он может быть использован "как чисто информативное сообщение, дополняющее описание ошибки и причину сбоя."