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

Core data 在创建新实体之前检查现有实体,core-data,Core Data,在创建具有相同属性的新实体之前,如何检查实体是否已存在?还是CoreData已经足够聪明,无法创建实体 例如,我有一个属性为name和id的实体雇员。现在用户通过对话框屏幕创建了一个新雇员,但该雇员已经基于id退出(可能有同名的雇员)。我想我可以创建一个获取请求,但我应该把代码放在哪里,我需要为员工创建一个类来完成这项工作吗 编辑:在发布我的问题后,我发现了这个页面:这是一种方法吗?似乎如果我有更多的实体,我就复制了大量的代码。核心数据将允许您创建除objectID之外所有内容都相同的托管对象

在创建具有相同属性的新实体之前,如何检查实体是否已存在?还是CoreData已经足够聪明,无法创建实体

例如,我有一个属性为name和id的实体雇员。现在用户通过对话框屏幕创建了一个新雇员,但该雇员已经基于id退出(可能有同名的雇员)。我想我可以创建一个获取请求,但我应该把代码放在哪里,我需要为员工创建一个类来完成这项工作吗


编辑:在发布我的问题后,我发现了这个页面:这是一种方法吗?似乎如果我有更多的实体,我就复制了大量的代码。

核心数据将允许您创建除objectID之外所有内容都相同的托管对象

最简单的解决方案是不允许重复的员工姓名。当用户输入新员工时,他们将通过键盘或鼠标触发事件。在该事件的操作方法中,首先通过检查用户输入的名称是否与现有名称匹配来验证用户的输入。您引用的链接提供了一个可以使用的获取请求的示例,尽管您可能希望研究如何仅获取匹配对象的数量,这样会更有效。如果存在匹配项,则显示警报


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

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