2010-02-11 37 views
3

我完全noob在objective-c和我想整天找到解決這個問題:
我有兩個實體(存儲和費用)。
在存儲中我有一個屬性「數字」。
的開支我有一個屬性「數字」和另一個名爲「成本」
兩個實體通過可可綁定
兩個NSArrayControllers我已經創建的子類,所以我可以創建以下動作掛錶:
1。乘以Expenses.selection.number與Storage.selection.cost
我這個代碼的費用ArrayController這樣做:ObjC /核心數據。我如何從另一個NSArrayController更改實體的鍵值?

- (IBAction)submit:(id)sender { 
    NSNumber *price = [NSNumber numberWithFloat:[[self.selection valueForKey:@"storage.buy"] floatValue]]; 
    NSNumber *insert = [NSNumber numberWithInt:[[self.selection valueForKey:@"number"] intValue]]; 
    NSNumber *cost; 
    cost = [NSNumber numberWithFloat:[insert intValue] * [price floatValue]]; 
    [self.selection setValue:cost forKey:@"cost"]; 


2.獲得Storage.selection.number並添加費用。 SEL ection.number
這裏我有一個問題。在ArrayController我嘗試費用:

NSNumber *stock = [NSNumber numberWithInt:[[self.selection valueForKey:@"storage.number"] intValue]]; 
sum = [NSNumber numberWithInt:[stock intValue] + [insert intValue]]; 
[self.selection setValue:sum forKey: @"storage.number"]; 


但我得到:[<NSManagedObject 0x10013ad50> setValue:forUndefinedKey:]: the entity Expenses is not key value coding-compliant for the key "Storage.number".
我也試圖創建存儲ArrayController的方法:

-(void)setNumber:(NSNumber*)number{ 
    [self.selection setValue:number forKey: @"number"]; 
} 

但是當我這樣稱呼它:[Storage seNumber: sum];它返回:

+[Storage setNumber:]: unrecognized selector sent to class 0x100003430

我也試過:

Storage *st = [[Storage alloc] init]; 
    [st setNumber: sum]; 
    [st release]; 


,雖然它不返回任何錯誤信息,這是行不通的。
任何想法如何解決這個問題?非常感謝。

回答

2

有兩種方法可以做到這一點:

使用-setValue: forKeyPath:代替-setValue: forKey:;或

抓鬥從所述第一對象在第二對象如下:

id selection = [self selection]; 
id storage = [selection valueForKey:@"storage"]; 
[storage setValue:sum forKey:@"number"]; 
+1

OMG,所有這一次是那麼容易??非常感謝你的幫助.. :) – Pr301 2010-02-12 07:26:50

相關問題