我有这个managedObject
子类,位置rappresent一个NSPoint。在XIB中我想要两个像这样的NSTextField
其中一个显示position.x值,另一个显示position.y。我试图将NSTextField绑定到管理帧的NSArrayController的“selection.position.x”和“selection.position.y”keyPath
我收到此错误::
[setValue:forUndefinedKey:]:这个类 不是密钥x的密钥值编码兼容。
所以我检查了KVC:
Frame.h
@interface Frame : NSManagedObject {
@private
}
@property (nonatomic, retain) NSNumber * order;
@property (nonatomic, retain) NSNumber *visible;
@property (nonatomic, retain) NSValue *position;
@property (nonatomic, retain) NSNumber *scale;
@property (nonatomic, retain) Sprite *sprite;
@property (nonatomic, retain) Resource *resource;
//test
@property (nonatomic, retain) NSValue *frame;
@end
在-(void)awakeFromInsert
我试试这段代码:
-(void)awakeFromInsert
{
[super awakeFromInsert];
self.position = [NSValue valueWithPoint:NSPointFromCGPoint(CGPointZero)];
//[self.position setValue:[NSNumber numberWithFloat:50.0f] forKey:@"x"];
[self setValue:[NSNumber numberWithFloat:1.0f] forKeyPath:@"scale"];
[self setValue:[NSNumber numberWithFloat:10.0f] forKeyPath:@"frame.origin.x"];
[self setValue:[NSNumber numberWithFloat:10.0f] forKeyPath:@"position.x"];
}
第一个和第二个KVC setValue工作,第三个崩溃与上面的相同消息
[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key x.
我不明白为什么,任何帮助都是值得欣赏的。
答案 0 :(得分:0)
NSValue对象不可变。要更改NSValue属性,必须创建新的NSValue对象,然后将其分配给属性。