iPhone: тип переменной, возвращаемый yajl - PullRequest
0 голосов
/ 14 июня 2010

Я довольно новичок в программировании на iphone и хочу сделать следующее:

  1. получить данные с веб-сервера JSON REST
  2. проанализировать полученные данные с помощью YAJL
  3. Нарисуйте график с этими данными, используя core-plot

Итак, с 1-м пунктом все в порядке, я использую ASIHttpRequest, который работает, как ожидается, 3-й почти нормально (мне еще нужно научиться, какнастроить основной сюжет).

У меня проблема с 2-м пунктом.Я использую YAJL, поскольку он кажется более быстрым синтаксическим анализатором, поэтому почему бы не попробовать его:)

Вот часть кода, которая получает данные с сервера и анализирует их:

// Get server data
response_data = [request responseData];

// Parse JSON received
self.arrayFromData = [response_data yajl_JSON];
NSLog(@"Array from data: %@", self.arrayFromData);

На самом деле синтаксический анализ работает достаточно хорошо, вывод NSLog выглядит примерно так:

2010-06-14 17: 56: 35.375 TEST_APP [3733: 207] Массив из данных:

{
data =     (
            {
        val = 1317;
        date = "2010-06-10T15:50:01+02:00";
    },
            {
        val = 1573;
        date = "2010-06-10T16:20:01+02:00";
    },
        ........
    {
        val = 840;
        date = "2010-06-11T14:50:01+02:00";
    },
            {
        val = 1265;
        date = "2010-06-11T15:20:01+02:00";
    }
);
from = "2010-06-10T15:50:01+02:00";
to = "2010-06-11T15:20:01+02:00";    
max = "2590";    
}

Согласно объяснениям yajl-objc http://github.com/gabriel/yajl-objc, синтаксический анализ возвращает NSArray ... Дело в том ... Я не знаю, как получить из него все значения, так как для меня это больше похоже наNSDictionary чем NSArray ...

Не могли бы вы помочь?

Большое спасибо, Люк

edit1: бывает, что этот объект на самом деле является NSCFDictionary (!),Я все еще не могу получить значение из него, когда я пытаюсь метод objectFromKey (который должен работать в словаре, нет?), Он терпит неудачу.

1 Ответ

1 голос
/ 14 июня 2010

Возвращается NSDictionary.NSCFDictionary является частным подклассом и несущественен для этого обсуждения.Похоже, вы получите что-то вроде:

NSDictionary * responseDictionary = ...;
NSArray * dataArray = [responseDictionary objectForKey:@"data"];
for (NSDictionary * dataPair in dataArray) {
  NSLog(@"val: %@, date: %@", [dataPair objectForKey:@"val"], [dataPair objectForKey:@"date"]);
}
...