(null)Core Data父实体属性的值

时间:2011-08-09 08:42:05

标签: objective-c core-data

我有两个核心数据实体:客户端和订单,客户端是订单的父级。我正在创建一个像这样的新订单:

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我得到一个(null)值,除了给定客户端的最后添加顺序之外的所有人。这就像客户端作为父级正确保存,但在为特定客户端添加新订单时会被遗忘。

1 个答案:

答案 0 :(得分:0)

ClientOrder关系是一对一设置的,这样任何人一次只能在Client.order中有一个Order对象。每当您设置新的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
}