2015-04-17 5 views
1

Я работаю над проверкой управляемого объекта. Пока что я закончил проверку уровня собственности. Теперь я размышляю над проверкой свойств. Я мог бы сделать это одним большим потоком управления if-else, но задавался вопросом, есть ли более элегантный вариант.Основные данные: проверка на основе предикатов

Я нашел NSValidationPredicateErrorKey с

Для предиката на основе проверки, ключ для предиката для условия , которые не удалось проверить.

в документации.

Как-то я чувствую, что это может быть мой выбор, но я ничего не нашел на эту тему. Я искал официальную документацию, SO, авторитетные блоги, Core Data book от Marcus S. Zarra.

Итак, что такое проверка на основе предикатов? Это даже существует? Это даже актуально, если не документировано? Каковы варианты использования? Если проверка соответствия между собой, какой пример?

+0

Что вы подразумеваете под термином 'inter-property validation'? –

+0

[«Существует два типа проверки-свойства-уровня и взаимного свойства. Вы используете проверку уровня собственности для обеспечения правильности отдельных значений, для проверки правильности сочетаний значений используется проверка на соответствие свойствам.»] (http://goo.gl/SyyqJ3) –

ответ

0

Просто переопределите validateForInsert и validateForUpdate в подклассах управляемых объектов для реализации проверки на соответствие свойствам, как показано в документации, которая должна быть найдена here (с примером кода).

«Проверка на основе предикатов» может быть достигнута с помощью богатого API управляемых объектов. Каждый NSManagedObject имеет ассоциированный NSEntityDescription (свойство называется entity). Через это вы можете добраться до NSPropertyDescription каждого объекта. Описания свойств в свою очередь имеют свойство validationPredicates, массив NSPredicates для проверки. Обратите внимание, что они доступны только для чтения, и они в основном используются для информирования об ошибках в случае ошибок проверки. Кроме того, на мой взгляд, они не всегда могут адекватно описывать валидацию в упомянутых выше переопределениях.

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

+0

Конечно. Но мой вопрос заключается в том, что документация означает «проверка на основе предикатов». –

+0

Справа. Я объяснил свой ответ. – Mundi

Смежные вопросы