2010-02-07 3 views
3

У меня есть NSTableView с двумя столбцами и источником данных, который заполняет его данными. Эта часть работает.Как получить данные из NSTableView?

Как получить данные (NSString формат) из NSTableView? Я могу получить выбранную строку, но NSTableView, похоже, не имеет методов для доступа к данным.

Получение данных из моего источника данных, кажется, вернуть ненужные данные (идентификатор типа и NSLog() и NSRunAlertPanel() оба утверждают, что данные не типа NSString.

Что это самый простой способ получить данные из NSTableView ?

Update:

Оказывается, причина получения данных из моего источника данных проигравшей имеет дело с возвращением NSString будучи частью NSArray в методе tableView().

Мой входной файл содержит строки, которые я разделил для столбцов в моем представлении таблицы. NSTableView получает правильные данные, но когда я вызываю метод tableView(), я запускаю ошибку EXC_BAD_ACCESS, которую, как я полагаю, имеет отношение к управлению памятью.

Еще одно обновление:

Это не управление памятью. Это была неспособность моей заявки идентифицировать нужный NSTableColumn. Я написал второй метод для доступа к данным вручную, который использует int для столбца, а не NSTableColumn, и это сработало.

+7

В Советской России (и в остальном мире) 'NSTableView' запрашивает данные у вас! – dreamlax

+0

Да, dreamlax, я это знаю. Вот почему я сказал, что отображение данных не является проблемой. –

+3

Дело в том, что вы не должны получать доступ к данным из вашего 'NSTableView'. Что вам нужно сделать, это загрузить файл в какую-то абстрактную модель данных, а также использовать методы tableview-datasource, а остальная часть вашей программы - получить доступ к данным этой модели. – dreamlax

ответ

9

Это парадигма MVC, использующая вашу таблицу (вид) как место для хранения ваших данных (Модель). Вы должны иметь возможность получать значение из своего источника данных так же, как это делает табличный вид; что делает ваш код для tableView:objectValueForTableColumn:row: сделать, чтобы получить данные?

Если ваша таблица доступна для редактирования, вы получите вызовы из вида таблицы до tableView:setObjectValue:forTableColumn:row:, чтобы вы могли соответствующим образом изменить источник данных.

+0

Мой источник данных считывает данные из файла. Но один из аргументов, который требуется для предоставления мне данных, - это NSTableColumn? Который из? Кроме того, данные, которые он мне дает, похоже, являются чем-то другим, кроме NSString, но я не знаю почему. –

+0

В столбце есть имя и тег, который вы можете проверить. В таблице не должно быть никаких данных вообще ... –

+0

Вы все игнорируете мое первое предложение. Я получил NSTableView для отображения данных. Моя проблема заключалась в том, чтобы получить источник данных, чтобы дать мне те же данные, которые он дал NSTableView. Когда я попытался использовать метод tableView, это не сработало, и я предположил, что будет более простой метод. Не было. –

Смежные вопросы