2011-08-09 26 views
0

我有兩個核心數據實體:客戶端和訂單,客戶端是訂單的父項。我創建一個新的訂單是這樣的:(空)值

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]; 
    } 
} 

的問題是,當我m試圖訪問訂單的客戶對象的屬性,例如order.client.clientID我得到一個(空)值,除了給定客戶端的最後添加訂單外的所有人。這就像客戶端被正確保存爲父母,但是當我爲特定客戶端添加新訂單時被遺忘了。

回答

0

ClientOrder的關係是一對一設置的,因此在任何人一次只能有Client.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 
} 
+0

事實上,我發現自己這麼昨天..我使用的Xcode 4,並沒有看到關係由於新的佈局類型.. – yannis