2011-01-18 5 views
5

У меня есть две сущности Книги и Связки. Книга не может принадлежать ни одному, ни одному, ни другому. Таким образом, у меня есть отношение двунаправленных ко многим между этими сущностями.iPhone - основные данные NSSet отношение

Я собираюсь установить значение этих отношений в части книги.

Если атрибут был регулярный один, я бы просто сделать что-то вроде

aBook.title = @"this is my title"; 

Если бы я хотел, чтобы установить название для книги. Но поскольку это отношение двунаправленного отношения ко многим, основные данные говорят, что это атрибут NSSet.

Мой вопрос: как установить и прочитать значения из этого атрибута?

Сначала я подумал, что это обычный NSSet. Таким образом, после прочтения продукт, который я сделал простой

NSSet *aSet = Book.fromBundle; 

но моему ужасу aОтключить режим содержал нулевой объекты

Так я думал, что ставило его по ошибке. я установил, что ранее делал

Book.fromBundle = [NSSet setWithObject:aBundle]; 

(да, все изменения были сохранены в базе данных)

я отсутствующий что-то? Спасибо

ответ

1

Это нормальный набор, но основные данные советуют напрямую назначать новый набор (по этой самой причине). Если вы используете пользовательский класс, стандартная реализация будет включать в себя методы addFromBundleObject: и removeFromBundleObject:. Если вы не используете собственный класс или не используете эти методы, вы можете использовать метод mutableSetValueForKey: для получения набора, который вы можете изменить.

NSMutableSet *mutableSet = [book mutableSetValueForKey:@"fromBundle"]; 
[mutableSet addObject:aBundle]; 
+0

спасибо. Приложение больше не терпит крах, но после использования этой команды несколько раз, чтобы добавить разные книги в книгу, книга просто хранит последнюю. Я проверил базу данных во внешнем приложении, потому что еще не понял, как создать предикат в запросе для проверки и посмотреть, включен ли объект bundle fromBundle. При слишком многих отношениях я бы использовал [NSPredicate predicateWithFormat: @ "(fromBundle ==% @)", aBundle], но я не знаю, как это сделать на NSSet ... если вы также можете помочь с этим, Я ценю (если это не слишком много) ...: D – SpaceDog

+0

Отношения «один ко многим» в основном такие же, как отношения «многие ко многим». Оба они представлены как NSSets. Единственное отличие заключается в том, как устанавливается обратная связь. Вы должны иметь возможность делать то же самое, что и для отношений «один ко многим». – ughoavgfhw

+0

спасибо !!!!!!!!!!!! – SpaceDog

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