Ios 核心数据复制对象处理

Ios 核心数据复制对象处理,ios,core-data,nspredicate,duplicate-removal,Ios,Core Data,Nspredicate,Duplicate Removal,我有一个应用程序,允许用户创建带有标题的文档,并为其指定作者。当从列表导入新对象时,我试图防止重复对象被输入到我的核心数据数据库中。我尝试按照中的建议进行操作,这建议加载所有导入的对象,然后查询数据库以查看这些对象是否已经存在,然后适当地处理重复的对象。在他们的示例中,他们查询单个属性: [fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"(employeeID IN %@)", employeeID

我有一个应用程序,允许用户创建带有标题的文档,并为其指定作者。当从列表导入新对象时,我试图防止重复对象被输入到我的核心数据数据库中。我尝试按照中的建议进行操作,这建议加载所有导入的对象,然后查询数据库以查看这些对象是否已经存在,然后适当地处理重复的对象。在他们的示例中,他们查询单个属性:

[fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"(employeeID IN %@)", employeeIDs]];
在我的例子中,我有两个属性定义了一个唯一的对象:title和author。因此,我不能简单地使用:

[fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"(title IN %@) AND (author IN %@)", titleList, authorList]];
我知道我可以使用一系列的or语句,但这似乎效率低下


关于如何高效地获得具有正确标题作者配对的对象,您有什么想法吗?

听起来您需要两个实体。文件和作者。文档具有标题属性以及与作者的关系。然后在导入时,需要两个阶段,但这并不是那么糟糕

首先,您可以导入所有新作者,首先检查已经存在的作者

然后处理新文档,排除已经存在的文档,并与作者建立关系


我认为,在这种情况下,您不需要尝试获得比这更聪明的东西,您只需要将其复杂化。

从技术上讲,在数据库中,我有一个authors实体和一个document实体。作者列表是唯一的,但我正在努力确保这些文档的标题也是唯一的。目前我有两个实体,一个是作者,一个是文档。然而,问题仍然在于如何知道某个特定作者的文档是否存在。我想我可以一个作者一个作者地验证这首诗,但我希望能在一次查询中完成这一切。我确实考虑过创建作者姓名和文档标题的另一个(暂时)属性。然后我可以查询该属性。首先看起来更像是SQL问题。了解如何检索该数据,然后了解如何在核心数据的上下文中应用该SQL。首先在SQL论坛中询问,然后将结果带回这里。