Чтение строки с веб-страницы - PullRequest
0 голосов
/ 10 июля 2011

Я много раз изучал это при переполнении стека и нашел несколько случаев, когда это может сработать для того, что я хочу сделать, но я не собираюсь лгать, я немного потерян.У меня есть очень простая строка, которая отображается на веб-странице, которую я хочу прочитать в приложении, проанализировать ее, а затем отобразить в некоторых UITextFields.URL-адрес mtgox.com/data/code/ticker.php.Это php-страница, которая выдает простую строку JSON, однострочную, похожую на следующую:

{"ticker":{"high":14.6999,"low":14.04,"avg":14.379509781,"vol":10981,"last":14.44278,"buy":14.4302,"sell":14.44278}}

Как я могу прочитать эту строку в моем приложении и затем проанализировать ее?Я думал о возможном использовании класса UIWebView и метода stringByEvaluatingJavaScriptString на сайте, но я не знаю много о javascript и не знаю, сработает ли это.

Я виделнекоторые люди упоминают об использовании библиотеки JSON, но не знают, будет ли это лучшим для того, что мне нужно, и будет ли это вообще работать;и я чувствую, что это может быть немного излишним, учитывая, что я разбираю только одну строку.

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

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

0 голосов
/ 10 июля 2011

Если вы настаиваете не использовать анализатор JSON (установка библиотеки и другие настройки конфигурации фреймворка), код ниже был протестирован и отлично работает для вашего URL:

Поместите этот код в контроллер представления с текстовым полем.


- (NSDictionary *)parseJSONFromSomeURL
{
    NSURL *pageURL = [NSURL URLWithString:@"http://mtgox.com/code/data/ticker.php"];
    NSString *JSONString = [NSString stringWithContentsOfURL:pageURL encoding:NSUTF8StringEncoding error:nil];

    JSONString = [JSONString stringByReplacingOccurrencesOfString:@"{" withString:@""];
    JSONString = [JSONString stringByReplacingOccurrencesOfString:@"}" withString:@""];
    JSONString = [JSONString stringByReplacingOccurrencesOfString:@"\"" withString:@""];

    NSArray *components = [JSONString componentsSeparatedByString:@","];

    NSMutableDictionary *result = [NSMutableDictionary dictionary];
    for (NSString *parts in components)
    {
        NSArray *subComponents = [parts componentsSeparatedByString:@":"];
        // First element has 3 items (it has ticker)
        if ([subComponents count] > 2)
        {
            [result setValue:@"" forKey:[subComponents objectAtIndex:0]];
            [result setValue:[subComponents objectAtIndex:2] forKey:[subComponents objectAtIndex:1]];
        }
        else
        {
            [result setValue:[subComponents objectAtIndex:1] forKey:[subComponents objectAtIndex:0]];
        }
    }

    return result;
}

Надеюсь, это поможет решить вашу проблему.

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