2010-06-14 24 views
0

回來,我很新的iPhone編程,我要做到以下幾點東西變量類型:iPhone:通過yajl

  1. 得到一個JSON REST Web服務器
  2. 數據分析使用YAJL接收到的數據
  3. 使用核心情節

因此,1號項目是好的,我用ASIHttpRequest它運行作爲espected 3幾乎是精細繪製這些數據的圖表(我仍然要學習如何調整核心地塊) 。

我有的問題是關於第二項。 我用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

它返回NSDictionaryNSCFDictionary是一個私人子類,對此討論並不重要。因此,它看起來像你找回東西,如:

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

感謝戴夫,我只是想通了爲什麼objectForKey方法是行不通的(我沒有使用正確的密鑰,愚蠢的我....)。事情是,我仍然不明白爲什麼它是一個NSDictionary,當它應該是一個NSArray(如文檔中指定的)。 非常感謝。 – Luc 2010-06-14 16:40:22