2013-03-08 85 views
0

我一直在試圖讓twitter搜索工作使用NSJSONSerialization來解析查詢結果。我原本使用了一個關於使用SLRequest訪問Twitter數據的教程,但是我發現在這樣做時我需要結果來更新一個屬性以保存它們。我想獲取是一個類方法,所以我避免使用屬性。我遇到的問題有點奇怪,我不知道爲什麼會發生。基本上我可以可靠地獲取[NSJSONSerialization JSONObjectWithData:...]的提取 - 除了字典中的一個鍵:值對之外,結果。鍵「結果」的值以()形式返回,並且類型爲__NSArrayM。我可以看到我發送的用於獲取數據的URL是正確的,並且解析的字典中的其餘信息是正確的。我不確定爲什麼會發生這種情況。NSJSONSerialization的Twitter API搜索請求

下面是一個例子GET請求: https://search.twitter.com/search.json?q=tech%20filter%3Alinks%20lang%3Aen&src=typd&rpp=1&include_entities=true

如果你去到該頁面,你可以看到「結果」鍵具有與之關聯的值,它應該是一個數組。在我的分析版本,不過,我有一個空數組:

fetchResults = { 
"completed_in" = "0.045"; 
"max_id" = 309208532929101825; 
"max_id_str" = 309208532929101825; 
page = 1; 
query = "tech%2520filter%253Alinks%2520lang%253Aen"; 
"refresh_url" = "?since_id=309208532929101825&q=tech%2520filter%253Alinks%2520lang%253Aen&include_entities=1"; 
results = (
); 
"results_per_page" = 1; 
"since_id" = 0; 
"since_id_str" = 0; 
} 

有爲什麼這可能發生的原因是什麼?我已經把我的代碼放在下面的JSON解析中。

+(NSArray *)fetchTweetsForSearchContent:(NSString *)searchContent 
{ 
    NSString *requestURL = [[TwitterFetcherrequestURLWithSearchContent:searchContent] absoluteString]; 

    NSLog(@"URL: %@",requestURL); 
    NSString *query = [requestURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSData *jsonData = [[NSStringstringWithContentsOfURL:[NSURLURLWithString:query] encoding:NSUTF8StringEncodingerror:nil] dataUsingEncoding:NSUTF8StringEncoding]; 
    NSError *error = nil; 

    NSDictionary *fetchResults = jsonData ? [NSJSONSerializationJSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaveserror:&error] : nil; 

    if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([selfclass]), NSStringFromSelector(_cmd), error.localizedDescription); 
    NSLog(@"%@", fetchResults); 
    return [fetchResults objectForKey:@"results"]; 
} 

回答

0
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];  

嘗試,這可能是它可以幫助和你從服務器得到響應數據取代「responseData」