0

Twitterアプリで作業しています。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];

}

4

1 に答える 1

1

テーブルビュー デリゲート コードを指定していません。Web サービスから新しいデータを取得するたびにオブジェクトを NSMutableArray に追加する必要があります。この配列を tableview 配列に割り当ててから、テーブルをリロードします。

于 2012-05-12T10:59:58.527 に答える