2013-03-04 27 views
0

我試圖從下面的JSON文件中獲取tvrage_name。AFNetworking valueForKeyPath通配符

{ 
    data: { 
      Band of Brothers: { 
           air_by_date: 0, 
           cache: { 
             banner: 1, 
             poster: 1 
             }, 
           language: "en", 
           network: "HBO", 
           next_ep_airdate: "", 
           paused: 0, 
           quality: "Any", 
           status: "Ended", 
           tvdbid: 74205, 
           tvrage_id: 2708, 
           tvrage_name: "Band of Brothers" 
           }, 
      Breaking Bad: { 
           air_by_date: 0, 
           cache: { 
           banner: 1, 
           poster: 1 
           }, 
           language: "en", 
           network: "AMC", 
           next_ep_airdate: "2013-07-14", 
           paused: 0, 
           quality: "HD", 
           status: "Continuing", 
           tvdbid: 81189, 
           tvrage_id: 18164, 
           tvrage_name: "Breaking Bad" 
           }, 
      }, 
      message: "", 
      result: "success" 
} 

有沒有辦法在valueForKeyPath中有通配符? 所以valueForKeyPath將是:數據* tvrage_name(將*將是通配符)

回答

0

號你將不得不遍歷所有的鍵/像這樣的值。*:

... 
NSDictionary *data = [JSON valueForKey:@"data"]; 
for (NSString *movie in data) { 
    NSLog(@"tvrage_name: %@", [[data valueForKey:movie] valueForKey:@"tvrage_name"]); 
} 
... 

*我喜歡在安全的一面,所以我總是有額外的檢查。例如[JSON isKindOfClass:[NSDictionary class]]

希望它有幫助。

+0

是這並獲得成功。非常感謝你! – 2013-03-04 16:03:01

+0

好。請記住將問題設置爲已回答。乾杯。 – jlmendezbonini 2013-03-04 16:19:59

0

如果你得到了詞典的副本,只是電視節目的條目(不是「消息」和「結果」),那麼你可以做[[shows allValues] valueForKeyPath:@"tvrage_name"]

這應該工作,因爲allValues爲您提供了字典的數組,所以valueForKeyPath會在給定的鍵下給你一個值的數組。

(但是它可能是一個壞主意,要做到這一點,無需額外的檢查或獲取JSON時,在網絡上的情況下,如你所期望的JSON不規整硬化)