在创建新实体之前检查现有实体

时间:2011-10-28 01:15:07

标签: core-data

在创建具有相同属性的新实体之前,如何检查实体是否已存在?或者CoreData已经足够聪明而不能创建实体了吗?

示例,我有一个具有属性名称和id的实体Employee。现在,用户通过对话框屏幕创建了一个新的Employee,但此Employee已经退出,基于id(可能有同名的员工)。我想可以创建一个获取请求,但是我在哪里放置代码,我是否需要为Employee创建一个类来执行此操作?

编辑:在发布我的问题之后,我找到了这个页面:http://www.macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-app这会是一种方法吗?好像我有更多的实体,我正在复制很多代码。

1 个答案:

答案 0 :(得分:0)

核心数据将允许您创建除了objectID之外的所有托管对象。

最简单的解决方案是禁止重复的员工姓名。当用户输入新员工时,他们将通过键盘或鼠标触发事件。在此事件的操作方法中,您将首先通过检查用户输入的名称是否与现有名称匹配来验证用户的条目。您引用的链接提供了您可以使用的获取请求的示例,尽管您可能想要研究如何仅获取匹配对象的计数,这将更有效。如果匹配,则显示警告。

如果您确实希望允许重复名称,则可以依靠CoreData分配的objectID来区分条目。但是用户不知道该ID是什么。因此,您仍然需要检查名称匹配并显示一个确认对话框,询问用户是否真的打算创建一个具有相同名称的单独员工条目。