Яху! погода в приложении для айфона

Я разрабатываю приложение для iphone, используя службу погоды Yahoo (у меня есть ключ). у меня 2 вопрос:

  1. могу ли я использовать его в своем приложении для коммерческого использования (например, разместить свое приложение в магазине приложений бесплатно или нет)
  2. почему результаты xml и json отличаются: http://weather.yahooapis.com/forecastrss?w=29330057&u=c и http://weather.yahooapis.com/forecastjson?w=29330057&u=c

есть что делать много (у первых есть разыскиваемое место)? Спасибо.


person Red Mak    schedule 08.12.2011    source источник


Ответы (2)


Я подозреваю, что это проблема с пространствами имен XML. В зависимости от используемой структуры и фактического полного XML вам придется обращаться к элементам по их пространству имен. Возможно, вы захотите переключиться на другую платформу на основе DOM (без использования NSXMLParser), например GDataXMLNode от Google. В среде на основе DOM вы можете получить доступ к отдельным узлам в древовидной структуре вместо того, чтобы создавать их самостоятельно.

В сети есть множество примеров для этого, например Building RSS-ридер или как для чтения и записи XML-документов с помощью GDataXML. Но чтобы привести быстрый пример, как это может выглядеть:

NSError *error = nil;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];

if (doc == nil) { return nil; }

NSMutableDictionary *result = [[NSMutableDictionary alloc] init];

NSArray *lists = [doc nodesForXPath:@"/result/list" error:nil];
if ([lists count] > 0)
{
    for (GDataXMLNode *list in lists) {
        int listid = [self integerInNode:list forXPath:@"listid"];
        NSString *listname = [self stringInNode:list forXPath:@"name"];

        [result setValue:[NSNumber numberWithInt:listid] forKey:listname];   

    }     
}
[doc release];
return [result autorelease]; 
person Dennis Bliefernicht    schedule 08.12.2011
comment
во-первых, спасибо за повтор, и мне жаль, потому что я редактирую сообщение, и это делает ответ не связанным с ним, но я делаю это, потому что на странице есть ошибка, я объясняю: я пишу свой вопрос (но я не нажимаю Разместите свой вопрос), но я нахожу решение иметь список json, поэтому я удаляю то, что я написал после того, как это невозможно опубликовать, и у меня есть сообщение об ошибке: не в нашем стандарте. прости еще раз. я публикую исходный пост: мой вопрос заключался в том, что nsxmlparser не может разобрать что-то вроде этого ‹yweather:location city=Arc 1800 region=country=France/› - person Red Mak; 08.12.2011

  1. Да, Яху! позволяют использовать их API в соответствии с политикой добросовестного использования, даже в коммерческих целях. Не будьте ослом и дайте им достаточно реквизита, например. их значок или логотип со ссылкой на их веб-сайт.
  2. Я не думаю, что важно знать, почему существуют различия в обоих выходных форматах. Используйте то, что лучше/проще для вас. Лично я предпочитаю использовать JSON и класс Apple NSJSONSerialization.
person Rafael Bugajewski    schedule 04.10.2012