#macos #cocoa #yahoo #weather #yahoo-weather-api
#macos #какао #yahoo #Погода #yahoo-weather-api
Вопрос:
Мне нужно проанализировать RSS-канал Yahoo Weather для такого места, как http://weather .yahooapis.com/forecastrss?w=44418amp;u=c например, чтобы получить высокую, низкую, текущую температуру и изображение погоды, например. изображение солнца и облаков за текущий день.
Я бы хотел сделать это в Cocoa (Mac).
Любая помощь будет оценена, спасибо!
Ответ №1:
У вас есть два способа, как вы могли бы решить эту проблему:
Используйте оболочку
Если вы не хотите решать проблему простым способом, вы можете использовать решение, которое кто-то уже запрограммировал для вас, например, эту простую оболочку. Проблема в том, что эта оболочка просто выбирает базовые вещи, такие как температура и т. Д. Если вам нужна дополнительная информация, вам придется расширить код, но я думаю, что это не должно быть большой проблемой.
Вот пример использования:
#import "SCYahooWeatherParser.h"
// ...
SCYahooWeatherParser *parser = [[SCYahooWeatherParser alloc] initWithWOEID:woeid weatherUnit: SCWeatherUnitCelcius];
SCYahooWeather *result = [parser parse];
// now you can handle the parameters of result by yourself.
Используйте анализатор XML
Если вы не хотите, вы можете решить это также сложным, но более чистым способом. Вы можете загрузить XML с их серверов и проанализировать его с помощью анализатора XML. Для этого я рекомендую вам сначала ознакомиться с документацией Yahoo weather API. Затем, когда вы знаете, что делаете, я рекомендую вам использовать TouchXML для анализа XML-данных, потому что это очень хороший анализатор XML, который также используется многими людьми.
Комментарии:
1. Большое спасибо за этот подробный ответ! 🙂 Пробую SCYahooWeather, но, поскольку я не лучший, я немного не уверен в том, как его использовать. Должен ли я #импортировать SCWeather.h, а затем как мне инициализировать с помощью WOEID и все такое?
2. Сначала вы
#import SCYahooWeatherParser.h
, а затем вы вызываете[[SCYahooWeatherParser alloc] initWithWOEID:woeid weatherUnit: SCWeatherUnitCelcius];
, с помощью чего вы можете сгенерировать результатSCYahooWeather *result = [parserObject parse];
и получить доступ к свойствам результирующего объекта.3. Возникли небольшие проблемы с SCYahooWeather *result = [parserObject parse]; Я получаю сообщение об ошибке — «Использование необъявленного идентификатора ‘parserObject'»
4. Посмотрите на пример кода, который я добавил сейчас. Я думаю, вы забыли
...parser = [[SCYahooWeatherParser alloc] ...
. Но я не уверен, поможет ли это вам.5. Почему бы вам не использовать стандартный NSXMLParser?