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

标签 objective-c cocoa

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

相关文章:

objective-c - Cocoa App 进入全屏

java - 哪个更容易编码 : Android App vs iOS App?

ios - 将 NSArray 中的所有值相加并求平均值

macos - 既然 ColorSync Manager API 中的所有内容均已弃用,我如何查找显示配置文件

cocoa - 将 NSMutableArray 传递给其他类

objective-c - 是否可以将 cocoa 绑定(bind)与 NSTableView 和多对多关系一起使用

swift - 在我的 mac 应用程序中添加自定义 View Controller 作为 Root View Controller ?

ios - Xcode不建立更改的文件

objective-c - C 中的 OpenSSL Diffie Hellman DER 编码

Cocoa:将操作(复制:、粘贴:等)转发到响应者链