2010-07-07 46 views
0

我似乎无法解决如何从TouchJSON返回的字典中获取代表对象的字典。从TouchJSON的NSDictionary反序列化一个对象?

例如:

如果我使用JSON格式的位置:

http://search.twitter.com/search.json?q=hello

我将如何获得与“ID” = X,而不必把所有的鸣叫使用“for”语句向数组发送推文?

例如没有物体具有做到这一点...因为我知道了“ID”(JSON的关键,而不是指数)我想访问

NSArray *tweetsArray = [resultsDictionary objectForKey:@"results"]; 
for (NSDictionary *tweetDictionary in tweetsArray) { 
    NSString *tweetText = [tweetDictionary objectForKey:@"text"]; 
    [tweets addObject:tweetText]; 

} 
+0

你的示例代码有什么问题?你可以尝试自己解析JSON字符串,但是我不确定你想要实现什么。 – 2010-07-07 05:27:07

+0

嗯,我真的不想浪费资源将整个字符串解析为一个数组,当我确切知道我正在查找的“结果”节点的哪个子节点时。我认为会有一个更简单的方法? – 2010-07-07 11:38:43

回答

1

您可以使用NSPredicate来筛选tweetsArray这样的:

NSArray *tweetsArray = [resultsDictionary objectForKey:@"results"]; 
NSArray* filtered = [test filteredArrayUsingPredicate: 
          [NSPredicate predicateWithFormat:@"id = %@",@"456"]]; 

NSDictionary* tweet = [filtered lastObject]; 
+0

这是否回答您的问题?,然后请标记为已回答。或者我误解了它? – tonklon 2010-07-16 20:10:35

+1

我不知道到底是什么filteredArrayUsingPredicate:做的,但我认为它仍然需要以某种方式遍历数组,这对于提问者来说看起来像是一个性能问题。再次看看这个问题:“如何使用”for“语句获得带有”id“= x的推文,而不必将所有推文都拉入到数组中?” – vodkhang 2010-07-17 13:50:54

0

为什么在解析JSON时不过滤id = x条件。这将确保您只遍历JSON数据一次。

这只能是一个更好的解决方案,如果您必须访问JSON仅为id = x条件。