我有两个核心数据实体:客户端和订单,客户端是订单的父级。我正在创建一个像这样的新订单:
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)值,除了给定客户端的最后添加顺序之外的所有人。这就像客户端作为父级正确保存,但在为特定客户端添加新订单时会被遗忘。
答案 0 :(得分:0)
Client
到Order
关系是一对一设置的,这样任何人一次只能在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
}