I'm working on porting some ancient code (10.2 era) from NSCoding/plist based archiving to using Core Data. I have an NSOutlineView with a custom NSTextFieldCell. The outline view is bound to an NSTreeController to provide the data.
The bindings model looks like this:
NSTreeController: Managed Object Context -> Controller.managedObjectContext
NSOutlineView's NSTableColumn Value -> Tree Controller:arrangedObjects:itemDictionary
The NSOutlineView has a custom NSTextFieldCell subclass that adds an image next to the text field, so I am passing the NSManagedObject's values to it as an NSMutableDictionary called itemDictionary so I can pull and set the title and isChecked key values.
Where I am running into issues is updating the text field's value and passing that changed value back to my managed object instance. After the user double-clicks on the title value and edits it, it is passed to -(id)objectValue
, but I'm not sure what the next step is to get the update propagated to my NSManagedObject instance. The code I have thus far for reading and setting values in my NSTextFieldCell subclass is below:
- (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];
}