我正在尝试通过绑定填充2列NSVTableView,但数据未显示在表中。
在XCode中:
我的AppDelegate中有一个NSMutableArray,它将保存数据,以及相应的@property和@synthesize。
在一个事件上,我在NSMutableArray上调用[removeAllObjects]并用一些NSDictionary对象重新填充它。每个字典包含2个KVP:一个名称和一个值。
在IB:
我添加了一个NSArrayController并将其内容数组绑定到我的AppDelegate,并将ModelKeyPath设置为AppDelegate中NSMutableArray的名称。
在NSTableView上,我将Content绑定到ArrayController。 ControllerKey =“arrangeObjects”,ModelKeyPath = empty 。
对于这两列中的每一列,我将Value绑定到AppController并将ModelKeyPaths分别设置为NAME和VALUE。 ControllerKey =“ArrangedObjects”。
我已经尝试过其他一些东西,例如在app委托中使用NSArray,并在每次需要更新值时创建一个新的。必须有一些我忘记的小事。它是什么?
jorj
答案 0 :(得分:4)
NSArrayController在存储方面与NSMutableArray没有什么不同。如果您可以使用[[mutableArray firstObject] valueForKey:@"NAME"];
之类的内容并获取所需的值,那么阵列控制器应该能够为您提供正确的值,并且如果您具有正确的连接,绑定应该可以正常工作。
但是,如果前面提到的代码行没有为您提供所需的值,那么您会遇到其他问题。很难说清楚,但我现在假设你有一系列字典都有相同的两个键(让我们称之为firstKey
和secondKey
)。 Ii将进一步假设目标是让第一列显示firstKey
的所有值,第二列显示secondKey
的值。根据这个理论,你的AppDelegate中的NSMutableArray保持你上面描述的方式,但是你的绑定会有所改变。
首先,确保您使用的nib文件的文件所有者设置为AppDelegate
。
然后,ArrayController内容数组应绑定到File's Owner.mutableArray
。
表视图的整体绑定并不是非常重要,因为我没有任何问题只是绑定列。
第一列的值应绑定到ArrayController.arrangedObjects.firstKey
。当然,第二列是相同的,除了模型关键路径是secondKey
。