Самый простой ответ на это - выполнить запрос к контексту Core Data и вернуть объект, если он существует.Это наиболее эффективное и наименее подверженное ошибкам решение проблемы.
Вам не нужно создавать отдельный NSManagedObjectContext
и пытаться работать с политиками слияния, это очень неэффективный и опасный способ попробовать ирешить такую простую проблему.
Core Data обрабатывает много кэширования для вас в фоновом режиме.Если вы пытаетесь получить только что созданный объект, существует очень высокая вероятность того, что он все еще находится в кэше, поэтому ответ на ваш запрос будет почти мгновенным.
Примечание
Я просто вернулся к обоим этим примерным проектам еще раз, чтобы сообщить им об ошибке, и заметил, что они были обновлены, и наконец удалил предложение о создании нового контекста.Теперь они используют NSUndoManager
, где это уместно, и один контекст.