如何正确使用 Core Data 验证和错误框架?

Posted

技术标签:

【中文标题】如何正确使用 Core Data 验证和错误框架?【英文标题】:How to properly use CoreData validation & error framework? 【发布时间】:2010-06-16 15:10:10 【问题描述】:

我在 Xcode 中创建了一个模型,对于各种属性,我定义了最小值和最大值,并由 coreData 在运行时强制执行。

我正在使用 NSManagedObject validateValue:forKey:error 来检查用户输入值。

看到本地化错误消息不具体,我有点失望,我收到“无法完成操作。(Cocoa 错误 1620)”值太小和“操作无法完成”完成。(Cocoa 错误 1610)”对于太大的值。

coreData 文档中写道“您可以本地化托管对象模型的大部分方面,包括实体和属性名称以及错误消息”。不幸的是,关于如何为错误消息实现它并不是很详细。

那么您如何自定义错误消息?你如何本地化它们? 是否可以以提及参考值的方式对其进行自定义,例如:“值应低于 %@”或“值应高于 %@”?

【问题讨论】:

【参考方案1】:

要根据需要自定义错误,您需要实现自定义 NSManagedObject 子类,然后为每个属性实现验证方法以返回所需的错误。

【讨论】:

事实是验证例程已经存在并且非常通用,当我可以直接在 xcode coredata 模型中定义最小最大值时,我不想自定义每个 nsmanaged 对象设计师。要么我找到一种访问这些值的方法,要么我可能最终通过为每个属性使用自定义最小/最大用户信息值来重新定义我自己的值...... 错误本身在 CocoaErrors.h 中定义。 1620 是 NSValidationNumberTooSmallError 而 1610 是 NSValidationNumberTooLargeError。您还可以制作一个字典来返回枚举名称。数字代码应该是给程序员的,而文本错误是给最终用户的。这就是为什么文本错误通常只包含模糊的错误报告。 是否只需要更改非可选属性留空时弹出的错误消息上的文本?还是有更简单的方法来改变它?

以上是关于如何正确使用 Core Data 验证和错误框架?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Entity Core Data - NSDate 错误的年份? [复制]

iOS开发过程中使用Core Data应避免的十个错误

如何为一对多关系正确配置 Core Data 数据模型和 NSManagedObject?

为啥实体框架 System.Data.Entity.Core.Objects.RelationshipEntry 错误? (用于更改跟踪)

如果Core Data count / fetch请求中的实体名称错误,如何避免崩溃?

如何正确设置 Core Data Stack 到 iOS 和 Swift 中的第一个视图控制器?