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"];
}