【发布时间】:2009-06-04 21:54:50
【问题描述】:
我正在将一些古老的代码(10.2 时代)从基于 NSCoding/plist 的归档移植到使用 Core Data。我有一个带有自定义 NSTextFieldCell 的 NSOutlineView。大纲视图绑定到 NSTreeController 以提供数据。
绑定模型如下所示:
NSTreeController: 托管对象上下文 -> Controller.managedObjectContext
NSOutlineView 的 NSTableColumn 值 -> 树控制器: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];
}
【问题讨论】:
-
代码在你的 NSTextField 子类中?
-
是的,这是 NSTextFieldCell 子类的核心。
标签: cocoa core-data cocoa-bindings key-value-coding