Как сохранить более одного человека в сущности (CoreData) - PullRequest
1 голос
/ 23 марта 2012

У меня есть объект, который выглядит следующим образом:

Entityname = Country

с атрибутами "city" и "person".

Country *country = [NSEntityDescription insertNewObjectForEntityForName:@"Country" inManagedObjectContext:context];


    country.city = @"New York";
    country.person = @"Doug";
    country.person = @"Carry";
    country.person = @"Arthur";

Я хочу сохранить более одного люди в этом городе .

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

Как я могу сохранить более одного человек в CoreData ?

Надеюсь, вы поможете мне.

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Подход для решения вашей проблемы:

  1. Создать 3 объекта : Страна , Город и Человек
  2. Настройте свойства для ваших сущностей (например, Страна.имя, Город.имя, Персона.имя и т. Д.) С помощью графического инструмента XCode
  3. Настройте отношения между вашими сущностями. Вам нужен один-ко-многим из Страны -> Город [назовите его городами] и один-ко-многим из Страны -> Персона [назовите его лицами] (см. документация Apple относительно этой темы). Имейте в виду, что вам нужно будет установить и обратные отношения.
  4. Вот тут-то и начинается все самое интересное ... Выберите «Редактор»> «Создать подкласс NSManagedObject». Xcode затем сгенерирует файлы на основе вашей модели. Теперь, если вы посмотрите на файлы заголовков, вы должны увидеть среди сгенерированных методов что-то похожее на это:

...

- (void)addPersonObject:(Person *)value;
- (void)removePersonObject:(Person *)value;
- (void)addPersons:(NSSet *)value;
- (void)removePersons:(NSSet *)value;

...

С этого момента совершенно очевидно, чтобы понять, как добавить несколько объектов :) Я знаю, что поначалу все это может показаться сложным, но как только вы в этом разберетесь, вы действительно сможете легко и эффективно управлять сложными графами объектов. Я надеюсь, что эта информация выведет вас на правильный путь!

0 голосов
/ 23 марта 2012

Попробуйте этот код. Надеюсь, это поможет вам

yourArray = [[NSMutableArray alloc]initWIthObjects:@"Doug",@"Carry",@"Arthur"];

for(int i = 0; i < [yourArray count]; i++)
{
    NSManagedObjectContext *context = [self managedObjectContext];
    countryObject=[NSEntityDescription
                              insertNewObjectForEntityForName:@"Country" 
                              inManagedObjectContext:context]; 
    countryObject.city = @"New york";
    countryObject.people = [NSString stringWithFormat:@"%@",[yourArray objectAtIndex:i]];
    NSError *error;
    if (![context save:&error]) {
        NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
    }
}

UPDATE:

После того, как вы объяснили, что вам не нужны три различных случая, затем

Это можно сделать, создав отдельную сущность для City и People, а затем установите отношения между ними как to-many relationship., чтобы вы могли достичь этого.

0 голосов
/ 23 марта 2012

Вам нужно будет создать массив со всеми людьми, которых нужно сохранить в базовой модели данных.

...