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 の値を変更できるように、スライダーにバインドしますUI
。MyProperty.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
自体。