Подключение NSTableView к серверу XML-RPC - PullRequest
2 голосов
/ 20 ноября 2008

Существует несколько способов заполнить NSTableView данными через привязки, делегаты или источники данных.

Как лучше всего заполнить табличное представление данными, которые довольно часто меняются с сервера XML-RPC? Я ориентируюсь только на Mac OS X 10.5 и есть много примеров, как это сделать, но ничего особенного.

Есть мнения?

Ответы [ 4 ]

1 голос
/ 20 ноября 2008

Если я правильно понимаю, это действительно два отдельных вопроса. Как получить данные XML-RPC и как заполнить таблицу?

Я не слишком знаком с XML-RPC, но после быстрого осмотра кажется, что вы можете либо выполнить синтаксический анализ самостоятельно с помощью классов NSXML *, либо использовать одну из нескольких сторонних сред. Я думаю, что было бы хорошей идеей сначала взглянуть на доступные фреймворки, даже если вы в конечном итоге не используете их, они должны дать вам хорошее представление о том, как самостоятельно анализировать данные XML, если вы пойдете по этому пути. 1003 *

Получив данные из запроса XML-RPC, вы захотите сохранить их в какой-то структуре данных в классе контроллера. Вы можете использовать массив словарей или базовых строк или создать собственный объект для представления ваших данных, но это действительно зависит от сложности того, что вы делаете. Объект контроллера будет предоставлять данные для табличного представления, обрабатывать обновление и любые другие задачи, которые могут вам понадобиться. Вы можете сделать запрос XML-RPC непосредственно от контроллера или создать дополнительный класс для этого, чтобы отделить код.

Неважно, используете ли вы методы источника данных или привязки (вместе с контроллером массива), они оба работают нормально и имеют свои преимущества. Если вы только начинаете с Cocoa, обязательно используйте методы источника данных. Привязки требуют промежуточного знания Objective-C и Какао, и в противном случае их будет сложно использовать и отлаживать.

0 голосов
/ 09 апреля 2009

Я нашел этот xmlrpc framework гораздо проще в использовании. Вам, конечно, все еще нужно будет выполнить упаковку, как объяснялось ранее, поскольку это действительно два разных вопроса / проблемы.

0 голосов
/ 20 ноября 2008

Я бы использовал источник данных, потому что он очень простой и гибкий. Ваш объект, который предоставляет данные для NSTableView, должен реализовать только 2 функции:

  1. возвращаемое количество строк
  2. вернуть объект для данной строки / столбца

То, как объект хранит данные внутри, полностью зависит от вас (гибкость), поэтому вы можете выбрать все, что лучше всего подходит для анализа ответа xml-rpc.

Подробнее о NSTableViewDataSource

0 голосов
/ 20 ноября 2008

Я не знаю, как лучше. Я не думаю, что есть хороший способ, так что «лучший способ» действительно будет «наименее худшим».

Взгляните на Ядро веб-служб . Это Carbon API для взаимодействия с веб-сервисами XML-RPC и SOAP. Я использовал только функциональность SOAP, но XML-RPC также должен работать. Это больно, потому что это углерод, а не какао; но есть много сетевого кода, который вам не придется писать, что должно быть выигрышным.

После этого я собрал бы весь материал, говорящий о WSCore, в один класс, чтобы он реализовал протокол NSTableViewDataSource, и просто указал на представление вашей таблицы как на источник данных таблицы. Каждый раз, когда данные из веб-службы меняются, просто вызовите reloadData, чтобы обновить представление таблицы.

Удачи. Поддержка веб-служб в OS X в лучшем случае болезненна, поэтому она вам понадобится.

...