Нет ли "простого" способа привязать NSArray, который содержит NSDictionaries с неизвестными ключами к NSTableView?
Как лучше всего решить эту «общую» проблему?
Исходя из c # / asp.net, это кажется очень болезненной операцией.
редактирование:
Чтобы уточнить, о чем приложение: это простой редактор запросов, который отображает результат запроса в виде таблицы.
Я пытался следовать этому примеру: 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 в качестве записей.