2013-03-08 2 views
0

NSJSONSerialization을 사용하여 쿼리 결과를 구문 분석하기 위해 트위터 검색을 시도하고 있습니다. 원래 SLRequest를 사용하여 Twitter 데이터에 액세스하는 방법에 대한 자습서를 사용했지만이 작업을 수행 할 때 속성을 저장하기 위해 속성을 업데이트해야한다는 것을 알았습니다. 인출을 클래스 메서드로하고 싶습니다. 따라서 속성을 사용하지 않아도됩니다. 제가 겪고있는 문제는 약간 이상하고 왜 일어날 지 확신하지 못합니다. 기본적으로 [NSJSONSerialization JSONObjectWithData : ...]를 사용하여 가져 오기를 안정적으로 얻을 수 있습니다 - 하나의 키 : 사전의 값 쌍, 결과. 키 "results"의 값은()로 반환되며 __NSArrayM 유형입니다. 데이터를 가져 오기 위해 보내는 URL이 정확한지, 파싱 된 사전의 나머지 정보가 올바른지 확인할 수 있습니다. 왜 이런 일이 일어날 지 모르겠다.Twitter API 검색 요청에 대한 NSJSONSerialization

여기 예를 들어 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"를 대체 할 수 있습니다 시도