gpt4 book ai didi

objective-c - 带绑定(bind)的可编辑 NSTableView 不会在模型中设置值

转载 作者:行者123 更新时间:2023-12-03 16:40:02 26 4
gpt4 key购买 nike

这是我的设置。

在我的应用程序委托(delegate)中,我有一个名为 currentFoo 的属性。 currentFoo 属性设置为当前选定的 Foo 实例。每个 Foo 实例都有一个名为 results 的 NSMutableArray 属性。结果中的对象可以是各种类型,NSNumber、NSString 等...

我有一个在特定时间显示的 NSTableView,它允许用户查看 currentFoo 中的结果集合。还有 UI 允许添加和删除结果。

NSTableView 有一个列绑定(bind)到 NSArrayController 的arrangedObjects Controller 键。我编写了一个 NSValueTransformer 子类,在此绑定(bind)中使用它来将结果数组中找到的各种可能类型转换为我想要在表列中显示的字符串表示形式。

NSArrayController 的内容数组绑定(bind)连接到 NSObjectController 的选择 Controller 键,以 currentFoo.results 作为模型键路径。最后,NSObjectController 从应用程序委托(delegate)获取其内容。

这一切都很好,在 NSTableView 中添加、删除和显示 currentFoo.results 正如我想要的那样。

我的问题是当我尝试编辑 TableView 的内容时。我已将 NSValueTransformer 子类设置为允许反向转换,并实现了reverseTransformedValue:,单步执行代码显示,当我编辑 NSTableView 行中的值时,它会正确发送到我的值转换器的该方法,进行转换并返回。

当绑定(bind)尝试使用反向转换的值更新模型时,会发生错误:

Cocoa Bindings: Error setting value for key path of object 0 (from bound object (null)): [ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key .

所以基本上这个数组绑定(bind)到 TableView ,当用户编辑该行时,我想将字符串转换回适当的对象。 Cocoa 绑定(bind)给了我这个错误,这让我相信我需要在 NSTableColumn 绑定(bind)的关键路径中设置一些东西,但我不确定是什么。我尝试过“ self ”,但没有成功。

感谢任何帮助。

最佳答案

模型 key 不能为空,因此您会收到错误消息。

将结果对象从原始对象(字符串、装箱数字等)更改为模型对象(FooResult 类),并将绑定(bind)的模型键路径设置为您将拥有的那些模型对象的属性名称 TableView 发生变化。

基本上,您不能直接绑定(bind)到原始对象数组。您必须绑定(bind)到模型对象数组的某些属性。

关于objective-c - 带绑定(bind)的可编辑 NSTableView 不会在模型中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/409424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com