(нулевые) значения для свойств родительского объекта Core Data - PullRequest
0 голосов
/ 09 августа 2011

У меня есть два основных объекта данных: клиент и заказ, клиент является родителем для заказов.Я создаю новый заказ, как это:

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
Order *newOrder = (Order *)[NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
newOrder.date = [NSDate date];
newOrder.client = self.client;
NSError *error;
if (![context save:&error])
    NSLog(@"Error saving entity: %@", [error localizedDescription]);

Клиент объявлен в контроллере, как это: @property (nonatomic, retain) Client *client;

и устанавливается с помощью:

- (void)setClient:(Client *)newClient
{
    if (newClient != client) {
        [client release];
        client = [newClient retain];
    }
}

Проблема в том, что когда я пытаюсь получить доступ к свойству объекта клиента заказа, например, order.client.clientID, я получаю (нулевое) значение для всех, кроме последнего добавленного заказа для данного клиента.Это похоже на то, что клиент правильно сохраняется как родительский, но забывается, когда я добавляю новый заказ для конкретного клиента.

1 Ответ

0 голосов
/ 10 августа 2011

Отношение Client к Order устанавливается один к одному, так что в любой момент времени в Client.order может быть только один объект Order в *1003*.Всякий раз, когда вы устанавливаете новое отношение Order -> Client, оно удаляет предыдущий объект Order из этого отношения.

У вас есть:

Client{
  name:string
  order<-->Order.client
}

Order{
  date:date
  client<-->Client.order
}

... когда вам нужно:

Client{
  name:string
  orders<-->>Order.client
}

Order{
  date:date
  client<<-->Client.orders
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...