私は、NSCoding/plist ベースのアーカイブから Core Data の使用への古いコード (10.2 時代) の移植に取り組んでいます。カスタム NSTextFieldCell を持つ NSOutlineView があります。アウトライン ビューは、データを提供するために NSTreeController にバインドされます。
バインディング モデルは次のようになります。
NSTreeController: 管理オブジェクト コンテキスト -> Controller.managedObjectContext
NSOutlineView の NSTableColumn 値 -> Tree Controller:arrangedObjects:itemDictionary
NSOutlineView には、テキスト フィールドの横に画像を追加するカスタム NSTextFieldCell サブクラスがあるため、NSManagedObject の値を itemDictionary と呼ばれる NSMutableDictionary として渡し、タイトルと isChecked キーの値をプルして設定できるようにします。
問題が発生しているのは、テキスト フィールドの値を更新し、その変更された値を管理対象オブジェクト インスタンスに戻すことです。ユーザーがタイトルの値をダブルクリックして編集すると、それが に渡されますが-(id)objectValue
、次の手順で更新を NSManagedObject インスタンスに伝達する方法がわかりません。NSTextFieldCell サブクラスの値を読み取って設定するためのこれまでのコードは次のとおりです。
- (void)setStringValue:(NSString *)aString {
[super setObjectValue:aString];
}
- (void)setObjectValue:(id <NSCopying>)anObject {
id cellValues = anObject;
[super setObjectValue:[cellValues valueForKey:@"title"]];
[self setCheckState:[[cellValues valueForKey:@"isChecked"] integerValue]];
}
- (id)objectValue {
return [super objectValue];
}