核心数据重复对象处理

时间:2013-04-30 18:58:21

标签: ios core-data nspredicate duplicate-removal

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

[fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"(employeeID IN %@)", employeeIDs]];

在我的例子中,我有两个定义唯一对象的属性:title和author。所以我不能简单地使用:

[fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"(title IN %@) AND (author IN %@)", titleList, authorList]];

我知道我可以使用一系列或语句,但这似乎效率低下。

有关如何使用正确的标题 - 作者配对高效获取对象的任何想法吗?

1 个答案:

答案 0 :(得分:0)

听起来你需要2个实体。文件和作者。 Document具有title属性以及与Author的关系。然后在导入时,它需要分为两个阶段,但这并不是那么糟糕。

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

然后处理新文档,不包括已存在的文档并与作者建立关系。

在这种情况下,我认为你不需要尝试比这更聪明 - 你只会使它复杂化。