0

NSJSONSerializationを使用してTwitter検索を機能させ、クエリ結果を解析しようとしています。私はもともとSLRequestを使用してTwitterデータにアクセスするためのチュートリアルを使用しましたが、これを行うには、プロパティを保存するためにプロパティを更新するための結果が必要であることがわかりました。フェッチをクラスメソッドにしたいので、プロパティの使用は避けています。私が遭遇している問題は少し奇妙で、なぜそれが起こるのかわかりません。基本的に、[NSJSONSerialization JSONObjectWithData:...]を使用してフェッチを確実に取得できます。ただし、ディクショナリ内の1つのキーと値のペア、結果を除きます。キー「results」の値は()として返され、タイプは__NSArrayMです。データをフェッチするために送信しているURLが正しいこと、および解析された辞書の残りの情報が正しいことがわかります。私'

GETリクエストの例を次に示し ます。https ://search.twitter.com/search.json?q = tech%20filter%3Alinks%20lang%3Aen&src = typd&rpp = 1&include_entities = true

そのページに移動すると、「results」キーに値が関連付けられており、配列である必要があることがわかります。ただし、解析したバージョンでは、空の配列があります。

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

1 に答える 1

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

これを試してみると、「responseData」をサーバーから取得している応答データに置き換えることができる場合があります

于 2013-03-08T07:50:23.950 に答える