我对iphone编程很陌生,我想做以下事情:
所以,第1项没问题,我使用ASIHttpRequest,它按照预期运行 第三个几乎没问题(我仍然需要学习如何调整核心情节)。
我遇到的问题是关于第二项。 我使用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 ......
你能帮忙吗?
非常感谢, LUC
edit1:碰巧这个对象实际上是一个NSCFDictionary(!),我仍然无法从中获取值,当我尝试使用objectFromKey方法(应该在Dictionary上工作,没有?)时它会失败。 / p>
答案 0 :(得分:1)
它返回NSDictionary
。 NSCFDictionary
是一个私有子类,对于这个讨论并不重要。所以看起来你会检索像:
NSDictionary * responseDictionary = ...;
NSArray * dataArray = [responseDictionary objectForKey:@"data"];
for (NSDictionary * dataPair in dataArray) {
NSLog(@"val: %@, date: %@", [dataPair objectForKey:@"val"], [dataPair objectForKey:@"date"]);
}