Iphone 如何获取值';姓名及名称;来自nsdictionary对象的url?

Iphone 如何获取值';姓名及名称;来自nsdictionary对象的url?,iphone,xcode,nsdictionary,touchjson,Iphone,Xcode,Nsdictionary,Touchjson,我正在使用touchJSON,这对我来说非常好。我能够获取一个数组,将其放入字典,通过touchJSON序列化并通过http发送出去 现在在返回端,我收到了数据,并将其放入字典(我使用twitter上的trends.json作为json示例) 如果我尝试从dictionary对象获取趋势值,我会得到以下结果: 2010-08-02 00:23:31.069 rateMyTaxi[30610:207] ANSWER: ( { name = "Fried Chicken Flu";

我正在使用touchJSON,这对我来说非常好。我能够获取一个数组,将其放入字典,通过touchJSON序列化并通过http发送出去

现在在返回端,我收到了数据,并将其放入字典(我使用twitter上的trends.json作为json示例)

如果我尝试从dictionary对象获取趋势值,我会得到以下结果:

2010-08-02 00:23:31.069 rateMyTaxi[30610:207] ANSWER: (
  {
    name = "Fried Chicken Flu";
    url = "http://search.twitter.com/search?q=Fried+Chicken+Flu";
  },
  {
    name = "Lisa Simpson";
    url = "http://search.twitter.com/search?q=Lisa+Simpson";
  },
  {
    name = "#breakuplines";
    url = "http://search.twitter.com/search?q=%23breakuplines";
  },
  {
    name = "#thingsuglypeopledo";
    url = "http://search.twitter.com/search?q=%23thingsuglypeopledo";
  },
  {
    name = "Inception";
    url = "http://search.twitter.com/search?q=Inception";
  },
  {
    name = "#sharkweek";
    url = "http://search.twitter.com/search?q=%23sharkweek";
  },
  {
    name = "JailbreakMe";
    url = "http://search.twitter.com/search?q=JailbreakMe";
  },
  {
    name = "Kourtney";
    url = "http://search.twitter.com/search?q=Kourtney";
  },
  {
    name = "Shark";
    url = "http://search.twitter.com/search?q=Shark";
  },
  {
    name = "Boondocks";
    url = "http://search.twitter.com/search?q=Boondocks";
  }
)
如果我尝试获取name或URL的值,我将不会得到任何令人沮丧的结果。这就是我需要的数据。你可以判断它是字典格式的,因为它是格式化的,并且它可以正确地读取某种趋势。我很确定我错过了什么,所以请告诉我该走哪个方向

代码如下:

// this is all touch JSON magic. responseString has the full contents of trends.json

 NSString *response = [request responseString];
 NSLog(@"response value is:%@",response);

 NSString *jsonString = response;
 NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
 NSError *error = nil;
 NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
//end of touchJSON.  It is in a dictionary now.

 NSLog(@"dictionary:%@, error %@", dictionary, error); //http://cl.ly/adb6c6a974c3e70fb51c

 NSString *twitterTrends = (NSString *) [dictionary objectForKey:@"trends"];
 NSLog(@"ANSWER:%@",twitterTrends); //http://cl.ly/fe270fe7f05a0ea8d478

您只需要提取字典数组。(响应在字典中的数组中有一个字典。)

您需要从数组中提取每个字典,然后在该字典中查找名称和url条目

类似的内容应打印第一个条目:

NSArray *twitterTrends = [dictionary objectForKey:@"trends"];
NSDictionary *entry1 = [twitterTrends objectAtIndex:0];
NSLog(@"entry1: %@, %@", [entry1 objectForKey:@"name"], [entry1 objectForKey:@"url"]);

(代码尚未测试,因此可能无法直接编译!)

当您使用formatstring%@打印对象时,您将获得发送到对象的描述消息的输出。对于NSDictionary,此输出看起来非常类似于未解析的JSON,但它不是字符串,而是NSDictionary、NSArray、NSStrings、NSNumber和NSDate的对象图

所以我想让你在推特趋势中有一堆NSA字典。要获得部件,只需枚举数组

for (NSDictionary* trend in twitterTrends) {
    NSString* url = [trend objectForKey:@"url"];
    NSString* name = [trend objectForKey:@"name"];
}
或者,您可以通过其索引访问趋势:

[[twitterTrends objectAtIndex:5] objectForKey:@"url"];

谢谢,这就是我要找的。我提高了一个级别,提取了代码中的趋势字典。以下是(在[dictionary objectForKey:@“trends”]中的NSDictionary*项){NSString*名称=[item objectForKey:@“name”];NSString*url=[item objectForKey:@“url”];