Предполагая, что у вас есть Entity
для Word
и Category
, вам понадобится установить отношения (наименование может быть немного туманным).Также при условии, что Category
может иметь много слов и
// Word Entity
Relationship Destination Inverse
category Categories words
// Category Entity
Relationship Destination Inverse
words Word category // To-Many relationship
Вы правы, вам не понадобится поле category_id, так как все отношения управляются через граф объектов, который поддерживает Базовые данные.Вам все еще понадобится первичный ключ, такой как server_id
(или аналогичный) в каждой сущности, или у вас возникнут проблемы с обновлением / поиском уже сохраненных объектов.
Вот как я справляюсь с синхронизацией данных из внешней базы данных (яиспользовать интерфейсы RESTful с JSON, но это не имеет большого значения)
- Захватить фид, отсортированный по server_id
- Получить первичные ключи (server_id) всех объектов в фиде
- Выполните выборку, используя предикат, подобный
... @"(serverId IN %@)", primaryKeys
, который отсортирован по первичному ключу. - Пройдите по каждому массиву.Если результат выборки содержит мою запись, я обновляю ее.Если этого не произойдет, я вставлю новый.
- Вам нужно будет сделать это как для
Word
, так и для Category
- Затем получить все объекты, которые являются частью отношения
- Используйте соответствующие методы, сгенерированные основными данными, для добавления объектов.например, что-то вроде `[myArticle addWords: [NSSet setWithObjects: word1, word2, word3, nil];
Мне сложно проверить, но это должно дать вам отправную точку?Приятно видеть такого же участника курса Shiny, который использует переполнение стека - это не только я