2015-02-23 59 views
2

是否有關於-[NSResponder presentError:]方法如何工作的文檔?我試圖在我的庫中創建NSError實例,其userInfo值向用戶顯示儘可能多的有用信息。我有一段艱難的時光。哪些字段沒有 - [NSResponder presentError:] show?

我剛開始使用NSLocalizedFailureReasonErrorKey。看到它指定了生成的NSAlert(粗體字體,最上面的標籤)的messageText屬性,我接下來嘗試添加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等字段,如果要顯示,則預計將在NSLocalizedDescriptionKeyNSLocalizedRecoverySuggestionErrorKey中包含此字段。雖然它被稱爲「恢復建議」,但文檔明確指出它可能被用作「純粹的信息性補充錯誤描述和失敗原因的信息」。

相關問題