Core data Cocoa绑定不更新NSTextField值

Core data Cocoa绑定不更新NSTextField值,core-data,cocoa-bindings,Core Data,Cocoa Bindings,我有两个窗口,一个是用来显示内容的表视图。一个是用于输入内容的窗口 我将NSTextField绑定到我的应用程序委托中的属性。当我更改文本字段中的值时,app delegate属性将更改。但是,如果我换一种方式,以编程方式更改属性的绑定键,则文本字段的值不会更新。但是,它在表视图中不存在 这里出了什么问题?如何更新文本字段 编辑: 我试了这三个,结果都一样 [_addEntry setValue:@"Chet" forKey:@"payee"]; [_addEntry setPayee:@"ch

我有两个窗口,一个是用来显示内容的表视图。一个是用于输入内容的窗口

我将NSTextField绑定到我的应用程序委托中的属性。当我更改文本字段中的值时,app delegate属性将更改。但是,如果我换一种方式,以编程方式更改属性的绑定键,则文本字段的值不会更新。但是,它在表视图中不存在

这里出了什么问题?如何更新文本字段

编辑:

我试了这三个,结果都一样

[_addEntry setValue:@"Chet" forKey:@"payee"];
[_addEntry setPayee:@"chet"];
_addEntry.payee = @"chet";
编辑:

这里有一个简单的例子来阐述我的观点

标签和文本字段绑定到“str”属性。它最初是空的。按log可在控制台中查看。按change str按钮更改字符串。要验证的日志。请注意,标签和文本字段不会更新

编辑:

“我想完成什么?”

以下是我正在处理的项目:

我正在尽可能多地使用Cocoa绑定。我有一张表,里面有一堆数据。但是,每个条目都将有一个与之关联的图像数组。因此,当我添加一个新条目时,我需要打开一个新窗口,这样我就可以设置该条目的属性(而不是通过表)并上传一些图像

我不确定我是否正确实现了addEntryWindow。似乎每次打开和关闭窗口时,我都应该创建和破坏它。这似乎没有发生

另外,
[[self addEntry]setDate:[NSDate-date]]似乎无法为我解决问题

谢谢


Chet

您是如何通过编程方式更改字段的?您正在使用KVO吗?该字段是否在
NSManagedObject
实例中

绑定通过KVO工作。核心数据为其自身的内部用途禁用了KVO的某些方面,您可能会被其中之一绊倒

用代码示例更新您的问题,让我们看看发生了什么

更新 这两个窗口不一定需要位于同一个xib中,但它们需要与相同的实例通信。理想情况下,它们都应该与
NSManagedObject
的同一实例对话,因此与相同的
NSManagedObjectContext
对话

谁是每扇窗户的主人

主人是同一个人吗

如果没有,是否正在创建新的核心数据堆栈

更新 在您的测试中,我能够通过您编辑属性的方式更正它

- (IBAction)press:(id)sender {

  [self setStr:@"this"];
}
您直接访问iVar而不是属性。当您直接访问iVar时,KVO不会触发

此外,在xib文件中,您访问的是
self.str
,这是不必要的。应该是
str

您在实际项目中是否进行了任何直接财产访问

更新 您可以先执行get访问器,然后执行set访问器:

[[self addEntry] setPayee:xxx];

基于你所使用的变量,我想知道你想要实现什么。您能发布您试图实施的程序更改的确切代码吗?

我编辑了。。。也许我做错了-两个窗口应该在同一个xib文件中吗?检查我的新编辑-还有,不知道如何确定每个窗口的“所有者”是谁。。。它们都在MainMenu.xib文件中,它们都指向同一个nsmanagedobjectcontext。当我在输入窗口中更改某些内容时,表确实会更改…啊。我试图设置属性的一个属性。我不能完全做到[self-setAddEntry.payee:“chet”]……所以我想我只是搞乱了如何实现多个窗口。我为第二个窗口创建了一个新的.xib和NSWindowController。这一切都解决了。。。