2010-07-07 27 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條件。