我有一个 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/