NSCoding/plistベースのアーカイブからコアデータを使用する古代コード(10.2時代)を移植しています。カスタムNSTextFieldCellを持つNSOutlineViewがあります。アウトラインビューはNSTreeControllerにバインドされ、データを提供します。NSTextFieldCellの編集値に基づいてバインドされた辞書を更新します。
は、バインディングモデルは次のようになります。
NSTreeController: 管理オブジェクトコンテキスト - > Controller.managedObjectContext
NSOutlineViewのNSTableColumn 値 - >ツリーコントローラー:arrangedObjects:itemDictionary
がNSOutlineViewが持っていますテキストフィールドの隣に画像を追加するカスタムNSTextFieldCellサブクラスです。NSMagedDictionaryをitemDictionaryという名前でNSManagedObjectの値を渡しています。タイトルと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];
}
コードはNSTextFieldサブクラスにありますか? –
ええ、これはNSTextFieldCellサブクラスの肉です。 –