2012-05-12 3 views
0

私は自分のTwitterアプリケーションを使っています。私はTableViewで検索結果を取得しています。検索結果が更新されると、テーブルには新しい受信トゥイットが設定され、以前のトゥイットが消えます。誰かが私にちょうど新しいツイートを以前のつぶやきと一緒に加える方法を提案できますか?あなたは、テーブルビュー代議員code.You与えられていない既に含まれている以前のデータに加えて、TableViewに新しいデータを追加する方法?

//my array 
-(NSMutableArray *)retrievedTweets 
{ 
if (retrievedTweets == nil) 
{ 
    retrievedTweets = [NSMutableArray arrayWithCapacity:50]; 
} 
return retrievedTweets; 
} 


-(BOOL)checkCanTweet 
{ 
if ([TWTweetComposeViewController canSendTweet]) 
{ 
    self.goButton.enabled = YES; 
    self.goButton.alpha = 1.0; 
    return YES; 
} 
else 
{ 
    self.goButton.enabled = NO; 
    self.goButton.alpha = 0.6; 
    return NO; 
} 
} 

//search function 

-(void)searchTweet{ 

if (retrievedTweets == nil) { 
    retrievedTweets=[[NSMutableArray alloc] init]; 
} 
//retrievedTweets = nil; 

if ([self checkCanTweet]) 
{ 
    ACAccountStore *accountStore = [[ACAccountStore alloc] init]; 
    ACAccountType *accountType = 
    [accountStore 
    accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter ]; 
    [accountStore requestAccessToAccountsWithType:accountType 
          withCompletionHandler:^(BOOL granted, NSError *error) 
    { 
     if (granted) 
     { 
      NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; 

      if ([accountsArray count] >0) 
      { 
       [self.retrievedTweets removeAllObjects]; 

       NSString *str1 = [[NSString alloc]initWithFormat:@"http://search.twitter.com/search.json?q="]; 
       //NSString *str2 = [[NSString alloc]initWithFormat:@"http://search.twitter.com/search.json?q=%23"]; 


       NSString *textString = searchBarText.text; 
       NSString *urlString = [[NSString alloc]init]; 

       if(textString==nil) 
       { 
        self.goButton.enabled = NO; 
       } 
       else { 

        self.goButton.enabled = YES; 

        unichar c = [textString characterAtIndex:0]; 

        if(c == '#'){ 

         NSString *newStr = [textString substringWithRange:NSMakeRange(1, [textString length]-1)]; 
         urlString=[str1 stringByAppendingFormat:newStr]; 
        } 
        else { 

         urlString = [str1 stringByAppendingFormat:searchBarText.text]; 
        } 
       } 



       ACAccount *twitterAccount = [accountsArray objectAtIndex:0]; 
       TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:urlString] parameters:nil 
                  requestMethod:TWRequestMethodGET]; 

       [postRequest setAccount:twitterAccount]; 

       [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) 
        { 
         if ([urlResponse statusCode] == 200) 
         { 
          NSError *jsonParsingError; 
          NSDictionary *homeTimeline = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError]; 

          NSDictionary *results=[homeTimeline objectForKey:@"results"]; 
          Search *current; 


          for (NSDictionary *dict in results) 
          { 


           current = [[Search alloc] initWithDictionary:dict]; 
           [self.retrievedTweets addObject:current]; 
          } 

          dispatch_async(dispatch_get_main_queue(), ^{ 


           [self.tableViewPost reloadData]; 

          }); 
         } 
         else 
         { 
          NSLog(@"%@", [NSString stringWithFormat:@"HTTP response status: %i\n", [urlResponse statusCode]]); 
         } 
         // [self.tableViewPost reloadData]; 
        }]; 
      } 
     } 
     else 
     { 
      NSLog(@"Error, Twitter account access not granted."); 
     } 
    }]; 
} 

[searchBarText resignFirstResponder]; 

}

+0

新しいデータをどのように保存するのか、いくつかのコードを追加できますか? – rishi

+0

あなたはたった50のつぶやきしかないと思います。私は正しいですか? –

+0

いいえ、私は15(デフォルト)つぶやきを取得しています。 –

答えて

1

は、テーブルビューの配列(可変)を取得しますが、Webサービスを打つウェブservice.Beforeから新しいデータを取得NSMutableArrayの毎回にADDOBJECTする必要がありますこの配列を解析した後にWebサービスからオブジェクトを使用して追加していることを確認します。この配列をtableview配列に割り当ててから、テーブルを再読み込みします。

+0

合意。私はそれを行う方法[テーブルreloadData]が使用され、デリゲートメソッドはあなたの配列からテーブルを更新します。 – geminiCoder

関連する問題