Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
smth
175 / 44 / 6
Регистрация: 23.06.2011
Сообщений: 243
#1

CoreData: из-за связи между таблицами нельзя добавить проверку на уникальность поля - Программирование iOS/iPhone

31.05.2016, 21:12. Просмотров 536. Ответов 0

Добрый день!
До прошлой недели я всячески избегал работы с Core Data, но момент настал. Почитал мануалы на apple, raywenderlich, tutsplus итд, сижу, играюсь.. И доигрался до такой проблемы:
Предположим, есть 2 таблицы:
Employees {
id:String, уникальный
fullName:String
},
Departments {
name:String, уникальный
}

Связаны они так:
Departments <--optional---------------inverse------------non_optional-->>Employees
то есть, у Department может быть 0 и больше Employees, а вот у Employee должен быть один и только один Department. Inverse relation использую для того, чтобы избежать проблем с целостностью данных (примеров, чем грозит неиспользование, достаточно).

Схема вплоне логичная с точки зрения MySql, например, но Core Data странно ругается:
error: Misconfigured Entity: Entity Department cannot have uniqueness constraints and to-one mandatory inverse relationship Employee.department
То есть, он говорит, что если я хочу использовать обязательную связь один-ко-многим с инверсией (как это по русски-то?), то таблица Departments не может иметь уникальных полей. И правда, удаляю проверку на уникальность у Departments.name - все отлично. Также предлагается несколько костылей: убрать инверсию (что грозит проблемами с целостностью), сделать связь Employees->Departments необязательной, убрать проверку уникальности и делать это в коде.. Но это все костыли, я хочу понять, может, я где-то ошибся, так как нигде не находил "официальных" текстов насчет подобных ограничений? Если же они реально есть - то прошу дать на них ссылку, чтобы я мог ознакомиться, что можно делать, а что нельзя.

Добавлено через 3 часа 55 минут
Прошу прощения, я неправильно стрелку нарисовал, а отредактировать уже не могу. Связь выглядит так:
Departments <--non_optional---------------inverse------------optional-->>Employees
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2016, 21:12     CoreData: из-за связи между таблицами нельзя добавить проверку на уникальность поля
Посмотрите здесь:

Сравнения sqlite3 и coredata
Работа с таблицами
CoreData , наследование
Objective-C Array в CoreData
CoreData and FetchRequest
Покритикуйте мой метод работы с CoreData
Почему в категории нельзя добавлять поля instance method? Objective-C
Plist или coredata
Редактирование CoreData
Насколько рационально хранение изображений в CoreData
CoreData: как сохранить только одну entity из множества созданных
Swift CoreData "Список пользователей"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 15:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru