2011-10-28 46 views
0

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

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

编辑:后postng我的问题,我发现这个网页:http://www.macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-app这是一种方法来做到这一点?好像我有更多的实体,我正在复制大量的代码。

回答

0

核心数据将允许您创建除了它们的对象ID之外的所有对象都相同的托管对象。

最简单的解决方案是禁止重复的员工姓名。当用户输入新员工时,他们将通过键盘或鼠标触发事件。在您为此活动执行的操作方法中,您将首先通过检查他们输入的名称是否与现有名称相匹配来验证用户的输入。您引用的链接给出了您可以使用的获取请求的示例,但您可能想要调查如何仅获取匹配对象的数量,这会更有效。如果匹配,则显示警报。

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

+0

谢谢 - 我会继续并执行该链接的代码,并会查看您的建议。也许我会把它放在一个类别中,这样我就可以将它用于所有实体。 – Koen

相关问题