是否可以使核心数据属性唯一,即没有两个MyEntity对象可以具有相同的myAttribute?
我知道如何以编程方式执行此操作,但我希望有一种使用xcode中的图形数据模型编辑器来执行此操作的方法。
我正在使用iPhone 3.1.2 SDK。
我已决定使用该validate<key>:error:
方法来检查是否已存在具有特定值的托管对象<key>
。如果是这种情况,则会引发错误。
例如:
-(BOOL)validateMyAttribute:(id *)value error:(NSError **)error { //如果已经存在具有myAtribute值的对象,则返回NO }
感谢Martin Cote的投入。
查询时,请确保使用
self.managedObjectContext
,以确保检查正确的重复项的存在managedObjectContext
。否则,另存为(即迁移到新的URL)将失败。执行访存将更改托管对象上下文中的对象图-这不是您要在验证方法内执行的操作!
不一定-如果您仅查询而不插入/更新/删除任何实体,则上下文不会因验证而变脏。不建议在验证中引入编辑(以弄脏上下文),因为它会导致递归-在某些情况下还是可以的。
您可以通过检查以前保存的字段和未更改的字段来进行优化。