2013-05-13 232 views
3

我想解析推文使用Twitter框架,所以我寫了下面的代碼,它的工作正常,但它不是SynchronousTwitter搜索標籤

現在我試圖從#iOS獲取所有推文。

我用下面的代碼來獲取iOS的主題標籤的搜索結果:

-(void)fetchResults 
{ 
    // Do a simple search, using the Twitter API 
    TWRequest *request = [[TWRequest alloc] initWithURL:[NSURL URLWithString: 
                 @"http://search.twitter.com/search.json?q=iOS%20&rpp=20&with_twitter_user_id=true&result_type=recent"] 
              parameters:nil requestMethod:TWRequestMethodGET]; 

    // Notice this is a block, it is the handler to process the response 
    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) 
    { 
     if ([urlResponse statusCode] == 200) 
     { 
      // The response from Twitter is in JSON format 
      // Move the response into a dictionary and print 
      NSError *error; 
      dict = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error]; 
      NSLog(@"Twitter response: %@", [dict description]); 
      [self filterTweets]; 

     } 
     else 
      NSLog(@"Twitter error, HTTP response: %i", [urlResponse statusCode]); 
    }]; 

} 

結果我得到這個:

Twitter response: { 
"completed_in" = "0.007"; 
"max_id" = 333837474914766848; 
"max_id_str" = 333837474914766848; 
page = 1; 
query = quranRadios; 
"refresh_url" = "?since_id=333837474914766848&q=quranRadios&result_type=recent"; 
results =  (
      { 
     "created_at" = "Mon, 13 May 2013 06:53:51 +0000"; 
     "from_user" = YousefMutawe; 
     "from_user_id" = 324385406; 
     "from_user_id_str" = 324385406; 
     "from_user_name" = "Yousef N Mutawe \Uf8ff"; 
     geo = "<null>"; 
     id = 333837474914766848; 
     "id_str" = 333837474914766848; 
     "iso_language_code" = pt; 
     metadata =    { 
      "result_type" = recent; 
     }; 
     "profile_image_url" = "http://a0.twimg.com/profile_images/1533729607/20090719526_normal.jpg"; 
     "profile_image_url_https" = "https://si0.twimg.com/profile_images/1533729607/20090719526_normal.jpg"; 
     source = "&lt;a href=&quot;http://twitter.com/download/iphone&quot;&gt;Twitter for iPhone&lt;/a&gt;"; 
     text = "Testing #quranRadios @Mkalatrash"; 
    }, 
      { 
     "created_at" = "Sun, 12 May 2013 13:09:43 +0000"; 
     "from_user" = YousefMutawe; 
     "from_user_id" = 324385406; 
     "from_user_id_str" = 324385406; 
     "from_user_name" = "Yousef N Mutawe \Uf8ff"; 
     geo = "<null>"; 
     id = 333569679484416000; 
     "id_str" = 333569679484416000; 
     "iso_language_code" = et; 
     metadata =    { 
      "result_type" = recent; 
     }; 
     "profile_image_url" = "http://a0.twimg.com/profile_images/1533729607/20090719526_normal.jpg"; 
     "profile_image_url_https" = "https://si0.twimg.com/profile_images/1533729607/20090719526_normal.jpg"; 
     source = "&lt;a href=&quot;http://twitter.com/download/iphone&quot;&gt;Twitter for iPhone&lt;/a&gt;"; 
     text = "#quranRadios :)"; 
    } 
); 
"results_per_page" = 20; 
"since_id" = 0; 
"since_id_str" = 0; 

}

所以我用以下方法過濾結果並獲取(Tweet,用戶名和用戶圖像):

-(void)filterTweets 
{ 
    NSArray *results = [dict objectForKey:@"results"]; 

    //Loop through the results 
    int x =0; 
    for (NSDictionary *tweet in results) 
    { 
     // Get the tweet 
     NSString *twittext = [tweet objectForKey:@"text"]; 
     NSString *twitPic = [tweet objectForKey:@"profile_image_url"]; 
     NSString *userName = [tweet objectForKey:@"from_user"]; 
     // Save the tweet to the twitterText array 
     [tweetsInfo addObject:(twittext)]; 
     [tweetPics addObject:(twitPic)]; 
     [imagesArray addObject:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[tweetPics objectAtIndex:x]]]]]; 
     [userNameTweet addObject:userName]; 
     x++; 
    //NSLog(@"tweet ooooooo ======> %@",twitPic); 
     countMe++; 
    } 
[tweetsTable reloadData]; 
} 

我不知道如果我做的是正確的事情,那麼你會推薦我做什麼?我怎樣才能讓它同步?

剛接觸編程iOS,請指教。 謝謝。

+0

你是對的,異步獲取微博,並在主線程加載UI。沒關係。你爲什麼想讓它同步? – fannheyward 2013-05-13 08:37:44

+0

不應該同步嗎? 也許是因爲我試圖獲得新的推文! – Atrash 2013-05-13 08:42:50

+0

你的意思是同步,同步還是異步?他們之間有很大的差異。你之後是誰,代碼的哪一部分導致了這個問題? – rickerbh 2013-05-13 11:31:33

回答