为什么NSObjectController不更新它绑定的模型属性?
问题描述:
我配置的绑定是这样的:为什么NSObjectController不更新它绑定的模型属性?
@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSObjectController *controller;
...
self.controller = [[NSObjectController alloc] initWithContent:nil];
[self.controller bind:NSContentObjectBinding toObject:self
withKeyPath:@"name" options:nil];
[self.controller addObject:@"Hello"];
...
NSTextField *textField = [NSTextField textFieldWithString:nil];
[textField bind:NSValueBinding toObject:self.controller
withKeyPath:@"content" options:nil];
文本字段显示发射后的字符串“Hello”,然后我将其更改为“世界”并回车。然而,只有对象控制器的内容更新:
[controller.content isEqualToString:@"World"]; // YES
[self.name isEqualToString:@"World"]; // NO — WHY?
[self.name isEqualToString:@"Hello"]; // YES
那么,如何配置NSObjectController
更新其绑定到本地属性?
答
解决!感谢Jacob Gorban:
self.name = @"Hello";
self.controller = [[NSObjectController alloc] initWithContent:nil];
[self.controller bind:NSContentObjectBinding toObject:self
withKeyPath:@"self" options:nil];
...
NSTextField *textField = [NSTextField textFieldWithString:nil];
[textField bind:NSValueBinding toObject:self.controller
withKeyPath:@"selection.name" options:nil];
如果不是绑定自己,而是initWithContent:self? –
我认为这会导致保留周期,但解决方案非常接近。你能否确认我的回答?非常感谢,你真的帮助了! – Stream