【发布时间】:2015-02-10 21:29:37
【问题描述】:
- 我已经设置了核心数据堆栈,并对实体进行了一些验证 属性;
- 将一些托管对象存储到 sqlite 文件中;
- 手动损坏 sqlite 文件中的托管对象数据,使其无法 使用验证谓词进行验证。
但是在那之后我仍然可以获取具有无效值的对象。
我的问题是是否可以验证 sqlite 文件,以便确保获取具有有效值的托管对象?
我知道addPersistentStoreWithType:configuration:URL:options:error: 检查架构完整性,但我想检查存储的数据是否通过模型验证。
【问题讨论】:
-
据我所知,验证应用于托管对象上下文中的对象,并在保存上下文时进行检查(或显式调用验证方法)。我认为从持久存储文件加载时不会完成验证。
-
@MartinR 我可以在获取后进行验证,但我很艰难,我可能错过了一些东西,并且有明确的方法可以做到这一点,而无需手动获取/验证。
-
您如何“手动破坏”数据?就像@MartinR 所说,Core Data 的验证方案在保存数据时适用。您是否在应用外部编辑 SQLite 文件?
-
@TomHarrington 是的,我正在使用 sqlite3 实用程序,但这只是为了检查 Core Data 如何与包含一些无效数据的商店一起工作。我需要这个验证来处理用户提供的 sqlite 文件。 XML 有
NSValidateXMLStoreOption,但据我所知,sqlite 没有。
标签: objective-c validation core-data swift