2010-06-16 39 views
3

我已經在Xcode中創建了一個模型,對於各種屬性,我至少定義了&最大值,並且這些值在運行時由coreData執行。如何正確使用CoreData驗證和錯誤框架?

我正在使用NSManagedObject validateValue:forKey:錯誤來檢查用戶輸入值。

我有點失望,看到本地化的錯誤信息不是特定的,我得到一個「操作無法完成(可可錯誤1620)」太小的值和「操作couldn' (Cocoa error 1610)「的值太大。

它是在coreData文檔中編寫的,「您可以本地化託管對象模型的大多數方面,包括實體和屬性名稱和錯誤消息」。不幸的是,關於如何針對錯誤消息實現它並不是非常詳細。

那麼你如何定製錯誤信息?你如何本地化他們? 是否可以通過提及參考值ex的方式對其進行定製:「值應低於%@」或「值應高於%@」?

回答

0

要想自定義錯誤,您需要實現自定義的NSManagedObject子類,然後實現每個屬性的驗證方法以返回您希望的錯誤。

+0

事實上,驗證例程已經存在並且非常通用,我不想在xcode coredata模型設計器中直接定義min max值時自定義每個nsmanaged對象。要麼我找到一種方法來訪問這些值,或者我最終可以通過爲每個屬性使用自定義最小/最大用戶信息值來重新定義我的擁有者... – Xav 2010-06-16 18:26:09

+0

錯誤本身在CocoaErrors.h中定義。 1620是NSValidationNumberTooSmallError,而1610是NSValidationNumberTooLargeError。您也可以創建一個字典來返回枚舉名稱。數字代碼應該是程序員和最終用戶的文本錯誤。這就是爲什麼文本錯誤通常只包含模糊的錯誤報告。 – TechZen 2010-06-16 19:50:38

+0

僅當需要更改非可選屬性爲空時彈出的錯誤消息文本時才需要此操作。或者有更簡單的方法來改變它嗎? – Clay 2012-12-20 15:57:02