Ответ 1
Это действительно изменилось в iOS 9 - Apple добавила возможность добавлять уникальные ограничения для сущностей. Я написал сообщение в блоге, объяснив, как получить эту настройку.
tl; dr, там есть новый раздел на боковой панели при выборе объекта в редакторе для Core Data. Вы можете установить, какие ограничения (-ы) вы хотите быть уникальными во всех экземплярах объекта
Для автоматического разрешения конфликтов во время сохранения вам нужно убедиться, что у вас есть политика слияния, установленная для контекста управляемого объекта, иначе вы просто получите ошибки при сохранении (что может быть на самом деле тем, что вы хотите)
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[_managedObjectContext setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];
Помните, что разрешение конфликтов происходит только во время сохранения, а не вставки. Поэтому, если вы используете NSFetchedResultsController, вы увидите объекты с неповторимыми ограничениями по мере их вставки.
Если вы хотите, чтобы у вас не было объектов с неповторимыми ограничениями в контексте управляемого объекта без сохранения (если вы используете FRC), этот ответ по-прежнему, вероятно, лучший способ. Хотя, имейте в виду, это дорого, если вы делаете много вставок, поскольку NSFetchRequests - это дорогостоящие операции.