我试图对Cocoa Bindings有一个基本的了解,我想创建一个非常简单的项目。我有一个班级Person
,其类型name
的变量NSString
。以下是我希望工作的方式:
Person
类的实例。Person
类)的标签会根据name
实例的Person
变量自动更改其值。我花了好几个小时阅读各种教程和Apple Mac开发者库,但每个例子都只展示了如何让Cocoa Bindings与表一起工作。当我尝试开发更简单的东西时,我觉得我完全迷失了。我创建了一个基础项目,剩下的唯一事情就是创建所有绑定。我很乐意为我提供所有的联系,希望能给我一个解释。 https://www.dropbox.com/sh/6hddfxyitqp6uoc/AACgaRhKBhLo6EXCVN9W6GQua?dl=0 该项目是一个基于文档的应用程序,因为我将来会开发这种类型的应用程序。
答案 0 :(得分:6)
为什么你的项目不起作用有几个原因让我们重新开始并创建最简单的Cocoa绑定示例。
Prepares Content
。Value
绑定到Object Controller
,将控制台键selection
和模型关键路径name
绑定。Value
绑定到Object Controller
,将控制台键selection
和模型关键路径name
绑定。控制器会自动创建NSMutableDictionary
的实例,该实例符合每个键的KVO要求。更改文本字段的内容后,文本字段的绑定将调用setValue:@"New Contents" forKey:@"name"
。这将通知Label的绑定,并更新Label。
为什么你的项目不起作用:
[<Document 0x618000100750> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
的原因。删除此连接。name
的属性而不是ivar来修复。您不必使用setValue:forKey:
更改代码中的名称,person.name = [field stringValue]
即可。init
方法中设置。这太早了,xib还没有加载,控制器也不存在。在windowControllerDidLoadNib
中设置内容。我会使用addObject
而不是setContent
而不是addObject
。