Я бы сказал, что отношения и NSFetchRequest имеют свои сильные и слабые стороны.Как разработчик, вы должны знать, когда целесообразно использовать один или другой.Например, возьмите эту модель:
-------------- 1 * ------------
| Department |<------------->>| Employee |
-------------- ------------
| name | | name |
-------------- | age |
| salary |
------------
Если вы хотите получить всех сотрудников, принадлежащих к определенному отделу, тогда уместно придерживаться отношения «Department.employees».Неуместно создавать NSFetchRequest для сущности Employee с предикатом 'отдела == xxxx'.
И наоборот, если вы хотите найти сотрудников для определенного отдела с зарплатой> x, тогда целесообразно использоватьNSFetchRequest с предикатом типа «отдел == ххххх И зарплата> х».Нецелесообразно извлекать всех сотрудников, использующих отношение Department.employees, а затем выполнять итерацию по ним в цикле, чтобы найти высокодоходных.
Таким образом, отношения или NSFetchRequests по своей природе не являются "хорошими" или "плохой'.Просто используйте их соответствующим образом.Используйте отношения для навигации вашего графа объектов.Используйте NSFetchRequest для выполнения поиска по подмножеству или там, где вам нужна гибкость возврата результатов в виде словарей или нужно использовать NSExpressions.
РЕДАКТИРОВАТЬ В ДОБАВИТЬ:
Множество NSFetchRequests было засорено по всему вашему коду является признаком плохого дизайна.Я всегда инкапсулирую запросы данных в пользовательских классах NSManagedObject и стараюсь не вызывать какие-либо вызовы Core Data в коде контроллера представления / просмотра.
Извлеченные свойства, я полагаю, способ достижения того же самого.Я предпочитаю создавать NSFetchRequest в коде, а не использовать редактор Core Data для этого.Он гораздо более гибкий, но в действительности оба способа представляют собой одно и то же.