我无法将我的Cocoa项目从手动同步的界面模型转换为绑定模型,因此我不必担心界面粘合代码。
我跟着CocoaDevCentral Cocoa Bindings tutorial确保我已经覆盖了所有基础,但是事情没有正常工作。我有一个主 - 细节界面,但我甚至无法让界面的主部分正常工作。尽管我已经设置了类似于教程中显示的绑定模型,但主列中没有数据显示出来。我确保我的所有控制器和对象都有-(id)key
和-(void)setKey:(id)key
方法,以便它们符合绑定,我在我的nib中创建了一个ControllerAlias对象,将它连接到我的控制器,创建一个NSArrayController绑定到ControllerAlias连接的类中的一个NSMutableArrays,确保设置数组中包含的对象的类型,然后我将表列绑定到NSArrayController。
我在控制台中没有收到任何错误,将NSBindingDebugLogLevel
设置为1也不会产生任何错误,这有助于我找出问题所在。
我能想到的另一件事是确保事情正常工作是检查连接到NSArrayController的NSMutableArray实际上是否包含某些东西,并且它确实存在。
有什么建议吗?我应该检查Cocoa绑定还有哪些其他典型的陷阱?
答案 0 :(得分:1)
您是否在密钥中设置了断点:确定是否被调用的方法?如果不是,则表示没有为表列中的绑定设置正确的内容(因为您已经验证了您的数组中确实存在项目)。
我认为您不再需要创建对象控制器(该教程有点过时)。只需在NIB中创建一个Object,并将其类设置为Controller类。您可以直接通过它来设置绑定,而不是ObjectController。
要设置绑定,请执行以下操作:
这应该是你需要做的所有事情 - 我认为他们已经清理了很多,因为绑定是在几个版本之前首次推出的。
答案 1 :(得分:0)
我在笔尖中创建了一个ControllerAlias对象,
什么是“控制器别名”?这是模型,控制器还是视图?
将它连接到我的控制器,
你是什么意思?
创建了一个NSArrayController,它绑定了ControllerAlias连接到的类中的一个NSMutableArrays,
课程没有NSMutableArray
s。
你绑定了数组控制器的哪些属性?
你把它绑在哪个对象上?
您将该对象绑定到哪个关键路径?
...然后我将表列绑定到NSArrayController。
你绑定了表列的哪些属性?
您将数组控制器的哪个属性(键路径)绑定到?
答案 2 :(得分:0)
所以在我的原始代码中,我正在awakeFromNib中修改数组(NSArrayController代表的数组),而不是在init中,所以更改没有反映在接口中,因为我没有通过键修改数组 - 值观察方法。
我从
更改了代码theArray = [[NSMutableArray alloc] init];
[theArray addObject:newThing];
为:
theArray = [[NSMutableArray alloc] init];
NSMutableArray *bindingsCompliantArray = [self mutableArrayValueForKey:@"things"];
[bindingsCompliantArray addObject:newThing];
我认为另一种解决方案是在 - (id)init方法中加载 - 而不是 - (void)awakeFromNib方法,但这需要更大的重构,所以我没有这样做。
我通过添加一个按钮来通过NSArrayController在数组列表中创建一个新东西来解决这个问题,当我点击按钮时,一个新的东西被添加到数组中,我现有的数组也神奇地出现了。 / p>