0

私はiPhoneプログラミングにまったく慣れていないので、次のことをしたいと思っています。

  1. JSONRESTWebサーバーからデータを取得する
  2. YAJLを使用して受信データを解析します
  3. コアプロットを使用して、これらのデータでグラフを描画します

したがって、1番目の項目は問題ありません。3番目の項目はほぼ問題ないように実行されるASIHttpRequestを使用します(コアプロットを調整する方法をまだ学ぶ必要があります)。

私が抱えている問題は、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を返します...問題は...私はそれからすべての値を取得する方法がわかりませんNSArrayというよりはNSDictionaryのように見えます...

手伝ってもらえますか?

どうもありがとう、リュック

edit1:このオブジェクトは実際にはNSCFDictionary(!)であることが起こりますが、それでも値を取得できません。objectFromKeyメソッド(ディクショナリで機能するはずですが、そうではありませんか?)を試してみると失敗します。

4

1 に答える 1

1

を返しますNSDictionaryNSCFDictionaryはプライベートサブクラスであり、この説明には重要ではありません。したがって、次のようなものを取得するように見えます。

NSDictionary * responseDictionary = ...;
NSArray * dataArray = [responseDictionary objectForKey:@"data"];
for (NSDictionary * dataPair in dataArray) {
  NSLog(@"val: %@, date: %@", [dataPair objectForKey:@"val"], [dataPair objectForKey:@"date"]);
}
于 2010-06-14T16:37:25.630 に答える