2

NSObjectController次のように、フェッチ要求から作成する「MyProperty」オブジェクトを使用するように構成されたエンティティ ベースがあります。

@interface MyPropertyController : NSObjectController
@property (strong) NSString *propertyName;
@end

@implementation MyPropertyController

- (instancetype)initWithPropertyName:(NSString *)propName moc:(NSManagedObjectContext *)moc {
    if (self = [super init]) {
        self.propertyName = propName;

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"propertyName == %@", argumentArray:@[propName]];
        self.managedObjectContext = moc;
        self.entityName = @"MyProperty";
        self.fetchPredicate = predicate;
    }
    return self;
}

- (id)newObject {
    MyProperty *prop = [super newObject];
    prop.propertyName = self.propertyName;
    return prop;
}

@end

ユーザーが sider の値を変更できるように、スライダーにバインドしますUIMyProperty.numberValue

MyPropertyController *controller = [[MyPropertyController alloc] initWithPropertyName:@"some user-specified name" moc:self.managedObjectContext];
NSSlider *slider = [[NSSlider alloc] init];
[slider bind:NSValueBinding toObject:controller withKeyPath:@"content.numberValue" options:@{ NSNullPlaceholderBindingOption : @0 }];

MyPropertyユーザーがスライダーをドラッグしているときにのインスタンスが存在する限り、これはすべて機能します。MyPropertyただし、ユーザーがスライダーをドラッグしてインスタンスがまだ存在しない場合は、プロパティのインスタンスを自動的に作成したいと考えています。

これは可能ですか?私がそれを達成できた唯一の方法は、 を使用してクラスのインスタンスを手動で作成および挿入するカスタムNSValueTransformerを使用するreverseTransformedValueことでしたが、これを行う適切な方法があるはずだと感じずにはいられませんそれNSObjectController自体。

4

1 に答える 1