Проблема связывания с NSValue, которая содержит NSPoint - PullRequest
2 голосов
/ 11 августа 2011

У меня есть этот managedObject подкласс, положение, соответствующее NSPoint. В XIB я хочу два NSTextField, как это

http://s1.postimage.org/rkd74ebo/Schermata_08_2455785_alle_14_13_57.png

где одно значение display.x отображения, а другое position.y отображения. Я попытался привязать NSTextField к keyPath «selection.position.x» и «selection.position.y» NSArrayController, который управляет фреймами

Я получаю эту ошибку ::

[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.

Я не понимаю почему, любая помощь ценится.

1 Ответ

0 голосов
/ 11 августа 2011

NSValue объекты не являются изменяемыми. Чтобы изменить свойство NSValue, необходимо создать новый объект NSValue, а затем назначить его свойству.

...