我有一个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
我想把workHours总和绑定到标签......
-(void) awakeFromNib{
[label bind:@"value" toObject:person withKeyPath:@"@sum.workedHours" options:nil];
}
我得到了这个错误:
this class is not key value coding-compliant for the key @sum.
label
是一个IBOutlet,person
是我的NSWindowController的属性。
如果我尝试使用“@name”更改keyPath,它可以正常工作。
有什么问题?我可以使用@sum,@ count,@ avg等只能使用NSArrayController吗?
答案 0 :(得分:0)
这里的问题是workingHours数组不是符合KVC的对象的集合。
例如,如果您使用了表单的日常工作记录:
@interface DailyWork : NSObject {
NSDate *day;
int hours;
}
@property(retain) NSDate *day;
@property int hoursWorked;
@end
然后,这应该工作,因为集合运算符期望对正在收集的对象的字段执行操作。因此,如果您在NSArray中粘贴了DailyWork *值,例如:@“workingHours。@ hours”将为您提供workHours中每个对象(DailyWork *数组)中所有工作小时数的总和。