2015-02-23 3 views
2

Есть ли какая-либо документация о том, как работает метод -[NSResponder presentError:]? Я пытаюсь создать экземпляры NSError в своей библиотеке, значения userInfo показывают как можно больше полезной информации для пользователя. У меня тяжелое время.Какие поля - [NSResponder presentError:] показать?

Я начал использовать только NSLocalizedFailureReasonErrorKey. Увидев, что ему присвоено свойство messageText сгенерированного NSAlert (полужирный шрифт, самая верхняя метка), я в следующий раз попытался добавить на NSLocalizedDescriptionKey, который, как я думал, затем заполнил бы свойство informativeText, за нежирное объяснение под ним. Я также добавил NSURLErrorKey, так как эта библиотека имеет дело с файлами, и это было бы полезно.

Полученный NSAlert не показывает исходное NSLocalizedFailureReasonErrorKey значения на всех, с новым NSLocalizedDescriptionKey теперь становится в messageText. Он также не обнаруживает NSURLErrorKey.

Является ли мой единственный способ написать свой собственный метод представления ошибок и специальный случай этого домена библиотеки?

ответ

2

Как взаимодействуют ключи NSError с presentError:, описано в Руководстве по программированию ошибок при Localized Error Information.

Включает в себя диаграмму, подробно описывающую, что происходит. Как Документы внимания:

Failure reason

A brief sentence that explains the reason why the error occurred. It is typically part of the error description. Methods such as presentError: do not automatically display the failure reason because it is already included in the error description. The failure reason is for clients that only want to display the reason for the failure.

Если вы хотите изменить порядок полей в качестве NSError объекта до презентации, лучше всего это сделать с помощью переопределения willPresentError: вернуть скорректированный объект ошибки.

Что касается полей, подобных NSURLErrorKey, ожидается, что вы включили его в NSLocalizedDescriptionKey или NSLocalizedRecoverySuggestionErrorKey, если хотите его отобразить. Хотя это называется «предложением о восстановлении», документация явна, что его можно использовать «как чисто информативное сообщение, дополняющее описание ошибки и причину отказа».