2013-03-08 4 views
0

Я пытаюсь выполнить поиск в twitter, используя NSJSONSerialization для анализа результатов запроса. Первоначально я использовал учебное пособие по доступу к данным Twitter с использованием SLRequest, но я обнаружил, что для этого мне нужны результаты для обновления свойства, чтобы сохранить их. Я хочу, чтобы выборка была методом класса, поэтому я избегаю использования свойств. Проблема, с которой я сталкиваюсь, немного странная, и я не уверен, почему это произойдет. В принципе, я могу получить выборку с помощью [NSJSONSerialization JSONObjectWithData: ...] надежно - за исключением одной пары ключ: значение в словаре, результаты. Значение для ключевых «результатов» возвращается как() и является типом __NSArrayM. Я вижу, что URL-адрес, который я отправляю для получения данных, является правильным и что остальная часть информации в анализируемом словаре верна. Я не уверен, почему это произойдет.NSJSONSerialization for 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» с данными ответа вы получаете от сервера

Смежные вопросы