2013-04-30 2 views
1

У меня есть приложение, которое позволяет пользователям создавать документы с заголовком и назначать ему автора. Я пытаюсь предотвратить дублирование объектов в моей основной базе данных, когда новые объекты импортируются из списка. Я стараюсь следовать рекомендациям в Apples documentation, в котором предлагается загрузить все импортируемые объекты, затем запросить базу данных, чтобы узнать, существует ли какой-либо из этих объектов, а затем обрабатывать дубликаты соответствующим образом. В своем примере они запрашивая от одного атрибута:Core Data Duplicate Object Handeling

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

В моем случае, хотя, у меня есть два атрибута, которые определяют уникальный объект: название и автора. Так что я не могу просто использовать:

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

Я знаю, что я мог бы использовать серию или заявлений, но это, кажется неэффективным.

Любые идеи о том, как эффективно получить только объекты с правильным спариванием автор-автора?

+0

Технически, в базе данных у меня есть объект-автор и объект документа. Список авторов уникален, но я стараюсь, чтобы их названия там документов были уникальными. – Jbryson

ответ

0

Похоже, вам нужны 2 сущности. Документ и автор. Документ имеет свойство названия и отношение к Автору. Затем при импорте это должно быть 2 этапа, но это не так уж плохо.

Сначала вы можете импортировать все новые авторы, сначала проверив уже существующие авторы.

Затем обработайте новые документы, за исключением документов, которые уже существуют, и создайте отношения с автором.

Я не думаю, что вам нужно попробовать и получить более умное, чем это для этой ситуации - вы просто усложняете это.

+0

В настоящее время у меня есть два объекта, один для автора и один для документа. Однако по-прежнему остается проблема, как узнать, существует ли документ для определенного автора. Полагаю, я могу проверить автор стихов автором, но я надеялся сделать все это в одном запросе. Я действительно думал о создании другого (временного) атрибута имени автора и названия документа. Тогда я могу запросить этот атрибут. – Jbryson

+0

Сначала похоже на проблему SQL. Выяснив, как получить эти данные, как применять этот SQL в контексте основных данных. Сначала спросите его на форуме SQL, а затем верните результат. – bandejapaisa