2013-03-08 67 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”