2010-10-22 5 views
1

В Core Data есть способ иметь один экземпляр объекта, чтобы иметь несколько ссылок на другой? Это лучше всего понять на примере. У вас есть объект корзины покупок, ShoppingCart, и у вас есть книги, книги. Как вы правильно помещаете несколько копий одной книги в корзину?CoreData: несколько копий одного и того же элемента связаны с другим?

Независимо от того, сколько раз вы запускаете [shoppingCart addBooksObject:book];, он будет отображаться только один раз.

Прямо сейчас у меня есть соединение «многие-ко-многим» между ними, но так как shoppingCart.books - это набор, он удаляет дубликаты. Как мне обойти это?

ответ

1

Вы обходите это, используя подходящую модель данных. :-)

Это классическая проблема с «позицией». Есть Продукт, Счет и Позиция. В вашем случае книга представляет собой продукт и корзину покупок. Вы не помещаете товар в корзину, вы помещаете в корзину позицию (которая связана с продуктом).

Элемент (ы) размещены в корзине (по одному на продукт) и содержат атрибут количества (и, возможно, вычисленный промежуточный итог на основе некоторой скидки на объем, основанный на количестве). Другими словами, вам нужна промежуточная сущность (возможно, CartItem?), Чтобы удерживать отношения и количество.

+0

Итак, вы сами создаете таблицу соединений. Это будет прекрасно. Спасибо. – RyanJM

+0

Вы сделаете себе серьезную несправедливость, подумав о Core Data с точки зрения реляционных баз данных. Знание определенно помогает, но если вы примените его слишком жестко, вы пропустите много полезных упрощений Core Data. –

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