gpt4 book ai didi

objective-c - ObjC/核心数据。如何从另一个 NSArrayController 更改实体的键值?

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:36 25 4
gpt4 key购买 nike

我完全是 objective-c 的菜鸟,我整天都在努力寻找解决这个问题的方法:
我有两个实体(存储和费用)。
在存储中,我有一个属性“数字”。
在费用中,我有一个属性“number”和另一个名为“cost”的属性
两个实体都通过 cocoa 绑定(bind)链接到表
我已经为两个 NSArrayControllers 创建了子类,所以我可以创建以下操作:
1. 将 Expenses.selection.number 乘以 Storage.selection.cost
我用 Expenses ArrayController 中的这段代码做到了这一点:

- (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 并添加 Expenses.selection.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".
我还尝试在 Storage 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];


虽然它没有返回任何错误消息,但它不起作用。
任何想法如何解决这个问题?非常感谢。

最佳答案

有两种方法:

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

从第一个对象中抓取第二个对象如下:

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

关于objective-c - ObjC/核心数据。如何从另一个 NSArrayController 更改实体的键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com