Создание статей для отображения NSTableView из RSS-канала - PullRequest
0 голосов
/ 23 августа 2009

Как мне заставить NSTableView отображать RSS-канал (только один)? Я думаю, что это как-то связано с NSURL и настройкой источника данных таблиц. Но как именно я это сделаю?

Ответы [ 2 ]

3 голосов
/ 23 августа 2009

Для этого есть пара шагов.

  1. Вам нужен источник данных, конечно.
  2. Этот источник данных должен быть способен либо присоединяться к RSS-каналу, либо читать его, анализировать и превращать его во что-то осмысленное для отображения; или:
  3. Вам необходим источник данных-источник данных, который инкапсулирует биты разбора сети / XML / интерпретации RSS.

Скорее всего, вы захотите что-то вроде:

NSTableView <-> MyDatasource <-> MyDownloadHandler

Где MyDownloadHandler берет на себя всю загрузку и синтаксический анализ и уведомляет MyDatasource о получении данных, а затем уведомляет табличное представление о перерисовке (или терпеливо ждет, пока табличное представление перерисовает себя в его обычные операции или в результате срабатывания таймера, или путем отправки уведомлений, захваченных контроллером, который просит представление таблицы перерисовать себя).

РЕДАКТИРОВАТЬ: Это, конечно, на самом деле не отвечает на ваш вопрос ...

В частности, вам потребуется объект NSURLConnection для получения RSS-канала (синхронно или асинхронно; он может выполнять и то, и другое, если память служит, если нет, то есть другой класс, который делает это).

Вам также потребуется реализовать категорию NSXMLParserDelegate для объекта-обработчика и запустить NSXMLParser в своем канале RSS. (NSXMLParser фактически может быть инициализирован непосредственно с помощью initWithContentsOfURL:, что потенциально может сэкономить вам время.)

2 голосов
/ 23 августа 2009

Вы должны взглянуть на PubSub.framework:
Apple Developer Connection Руководство по программированию PubSub
Некоторые особенности:

  • получить содержимое канала
  • подписаться на каналы
  • Атом / RSS-агностик
  • ...

10,5 + только

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...