2015-08-12 1 views
0

У меня есть форма с примерно 10 UITextField. Эта форма используется для создания NSManagedObject с 10 полями. Когда пользователь нажимает кнопку «Готово», я должен сделать следующее:Связать данные ядра с UITextField, чтобы предотвратить использование шаблона?

  • Заполните все поля в NSManagedObject с данными из соответствующих полей
  • Run validateForInsert: и если некоторые данные недостоверны, отметьте UITextField недействительным

Я могу сделать это вручную, но это много шаблонов. Я могу использовать KVC, но мне интересно, существует ли такая структура уже. Есть ли какие-нибудь? Как вы его решаете?

ответ

3

Вы действительно не хотите использовать validateForInsert для генерации обратной связи для проверки подлинности на основе UI. Проверки, основанные на постоянном хранении, действительно предназначены только для обеспечения целостности данных, а не для обеспечения механизма обратной связи с пользовательским интерфейсом. (См. Также замечание Маркуса Зарры ниже.)

Я бы написал все проверки атрибутов в подкласс объекта. Вы могли бы tag указать свои текстовые поля и сохранить ключи в своих атрибутах в соответствующем упорядоченном массиве (также создаваемом методом удобства в подклассе объекта).

Затем можно идентифицировать ключ через текстовое поле тега:

if !Item.checkField(attributes[textField.tag]) { 
    // alert the user of faulty input 
} 

Вы, конечно, может также иметь один isValid метод для всего объекта с соответствующим сообщением об ошибке.

Вы можете определить поля для соответствующих атрибутов, используя тег:

textField.text = Item.valueForKey(attributes[textField.tag])! 
+0

Лучше создать текстовое поле подкласса, а не несколько раз с помощью тегов – Wain

+1

Чтобы быть более точным, то валидация ** ** предназначены для UI, но это предназначено для уведомления OS UI OS, а не уведомления iOS UI. В OS X проверка и уведомление автоматически, встроенные в привязки Cocoa. iOS не имеет одного и того же дизайна, поэтому подструктура валидации Core Data имеет очень мало значения для iOS. –

+0

Спасибо за разъяснение. – Mundi

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