gpt4 book ai didi

objective-c - 带有运算符和 NSArray 的 KeyPath

转载 作者:行者123 更新时间:2023-12-03 17:25:24 25 4
gpt4 key购买 nike

我有一个 Person 类定义为

@interface Person : NSObject {
NSString *name;
int age;
NSArray *workedHours;
}

@property (nonatomic,retain) NSArray *workedHours;

-(int)age;
-(void)setAge:(int)val;
-(NSString*)name;
-(void)setName:(NSString*)val;
@end

我想将工作时间总和绑定(bind)到标签...

-(void) awakeFromNib{
[label bind:@"value" toObject:person withKeyPath:@"@sum.workedHours" options:nil];
}

我收到此错误:此类不符合键 @sum 的键值编码。

label 是一个 IBOutlet,person 是我的 NSWindowController 的属性。如果我尝试使用“@name”更改 keyPath,它会正常工作。

出了什么问题?我可以仅在 NSArrayController 中使用 @sum、@count、@avg 等吗?

最佳答案

这里的问题是,workHours 数组不是符合 KVC 的对象集合。

例如,如果您使用以下形式的每日工作记录:

@interface DailyWork : NSObject {
NSDate *day;
int hours;
}
@property(retain) NSDate *day;
@property int hoursWorked;
@end

然后,这应该可以工作,因为集合运算符期望对正在收集的对象的字段执行操作。因此,如果您将 DailyWork* 值保存在 NSArray 中,例如:@"workedHours.@hours"将为您提供workingHours 中每个对象的所有工作小时数(DailyWork* 数组)。

关于objective-c - 带有运算符和 NSArray 的 KeyPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667918/

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