是否没有“简单”的方法将包含具有未知键的NSDictionaries的NSArray绑定到NSTableView?
解决此“常见”问题的最佳方法是什么?
来自c#/ asp.net,这似乎是一个非常痛苦的操作。
编辑:
要弄清楚该应用程序是关于什么的:它是一个简单的queryeditor,它在表视图中显示查询的结果。
我尝试遵循以下示例:http://www.cocoabuilder.com/archive/cocoa/150245-dynamic-columns-in-nstableview.html
我使用一个实现NSTableViewDataSource协议的对象。
当用户发出第一个查询时,结果将正确显示。但是第二个查询显示出一些奇怪的现象:这些列没有被正确删除,而是被添加到现有的列中,而不是全部。
在该方法中,构建表的方式如下:
NSArray *columns = [_resultTableView tableColumns];
if(columns && [columns count] > 0)
{
for( int i=0; i < [columns count]; i++)
{
NSTableColumn *col = [columns objectAtIndex:i];
NSLog(@"removing column: %@", [col identifier]);
[_resultTableView removeTableColumn:col];
}
}
NSDictionary *dict = [_resultTableDataSource.data objectAtIndex:0];
NSArray *keys = [[dict keyEnumerator] allObjects];
for( int i=0; i < [keys count]; i++)
{
NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:[keys objectAtIndex:i]];
[column setEditable:NO];
[[column headerCell] setStringValue:[keys objectAtIndex:i]];
[_resultTableView addTableColumn:column];
}
[_resultTableView setDataSource:_resultTableDataSource];
[_resultTableView reloadData];
_resultTableDataSource.data是一个NSMutableArray,具有NSMutableDictionary的记录。
最佳答案
看一下NSArrayController并在Interface Builder中配置列。然后就像1-2-3一样简单;)
从这里开始,继续阅读NSArrayController描述:
http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/CntrlContent.html
关于objective-c - 具有未知 key 的NSDictionaries的NSTableView的动态填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6396642/