Я не уверен, что вижу большое преимущество entityForName:[[Person class] description]
над entityForName:@"Person"
(или, может быть, entityForName:PersonEntityName
, где PersonEntityName - просто константа).Он работает нормально при условии, что имя класса, представляющего сущность, совпадает с именем сущности, но часто это не так.Весьма распространено использовать старый добрый NSManagedObject для простых сущностей, и это, очевидно, не соответствует имени сущности.
Аналогично, если вы создаете запрос на выборку, имена интересующих вас свойствОбычно они уже определены и вряд ли изменятся, поэтому проще всего их указать по имени.Вы можете получить массив свойств из описания объекта, но как вы узнаете, какое свойство использовать, если вы еще не знаете его имя?И если вы знаете имя свойства, то нет смысла извлекать описание свойства, чтобы вы могли получить его имя.; -)
Бывают случаи, когда полезно оставить сущность и свойства неопределенными до запуска приложения, например, когда вы хотите позволить пользователю указать параметры поиска.Однако в приведенном вами примере это явно не так, потому что вы указали формат предиката.