Какие поля показывает -[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, Если хотите его отобразить. Хотя это и называется "предложением восстановления", документация является явной что он может быть использован "как чисто информативное сообщение, дополняющее описание ошибки и причину сбоя."