0

我配置的綁定是這樣的:爲什麼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更新其綁定到本地屬性?

+1

如果不是綁定自己,而是initWithContent:self? –

+0

我認爲這會導致保留週期,但解決方案非常接近。你能否確認我的回答?非常感謝,你真的幫助了! – Stream

回答

0

解決!感謝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]; 
相關問題