сохранение отношения ко многим - PullRequest
0 голосов
/ 10 марта 2011

Я начинаю изучать и практиковать некоторые CoreData без опыта программирования.

После поиска в Интернете, поиска образцов Apple и чтения некоторых книг я все еще застрял в одной точке.

У меня есть две сущности (Расходы и Месяц) с взаимными отношениями, которые называются "monthsOfExpense" и "costOfmonth", и я показываю в виде таблицы расходы за один месяц.

Моя проблема заключается в том, чтобы вставить новые расходы и сохранить их: у меня есть представление о том, чтобы вставить новые расходы, когда пользователь может вставить название Расхода, значение и месяцы, в течение которых эти расходы действительны (связанные с отношением monthsOfExpense, т.е. надеюсь).

Я в порядке, сохраняя имя и значение объекта Expense, беря строку и NSDecimal число из textFields.

Моя проблема в том, как связать эти расходы с определенным или несколькими месяцами? Как я могу сохранить textField.text как отношение, указывающее, к какому месяцу относится Расход?

Я начинаю с textField, куда пользователь может вставить месяц, предполагая, что Расход действителен только в течение одного месяца (для целей обучения и упрощения).

Моя идея состоит в том, чтобы позволить пользователю выбирать несколько месяцев (используя, возможно, другой tableView с выбираемыми месяцами) и связывать расходы с разными месяцами.

Я знаю, что отношения появляются как NSSet, но я не компетентен одновременно сохранять атрибуты и отношения из View.

Надежда была очищена и большое спасибо заранее за попытку помочь.

Ответы [ 3 ]

1 голос
/ 21 марта 2011

OK. В Core data вы определяете свою сущность «Расход», создаете связь с сущностью «Месяц». Теперь создайте файлы классов для этих двух объектов. Тогда вы используете его по

Expense *expense1 = [NSEntityDescription insertNewObjectForEntityName:@"Expense" ....
Month *month1 = [context executeFetchRequest:......];
expense1.month = month1;
...
[context save];
0 голосов
/ 21 июля 2013

Вы отправляете управляемому объекту сообщение для его mutableSetValueForKey: RelationshipKey, затем добавляете к этому множеству управляемые объекты.CoreData завершает вторую половину данных взаимосвязи.

0 голосов
/ 15 марта 2011

В вашей ситуации вы можете предварительно определить 12 объектов «Месяц», указав название месяца в качестве свойства текста.

Затем вы можете искать эти объекты месяца с помощью NSFetchRequest.Добавьте соответствующие объекты месяца к своим расходам с помощью

[expense addMonthObject:month]

Затем сохраните контекст управляемого объекта.

...