Добавить массивы в Cell Row из каналов Twitter клиента в iphone - PullRequest
0 голосов
/ 19 марта 2012

Я новичок в разборе файла jSON в задаче C и хочу проанализировать Twitter. Json передает имена пользователей из списка.Я пытаюсь получить список подписчиков пользователя и проанализировать их, чтобы получить user_ids, а затем снова вызвать другой URL, чтобы получить их имена и фотографии профиля.Я получаю имена людей, но не могу правильно проанализировать список.Если кто-нибудь может помочь мне здесь, это будет действительно полезно.Мой код для извлечения данных:

-(void) fetchData{


ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

[account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error){

    if (granted == YES) {

        NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];

        if ([arrayOfAccounts count] > 0) {
            ACAccount *acct = [arrayOfAccounts objectAtIndex:0];
            NSString *username = acct.username;


            NSLog(@"Account : %@", username);

            TWRequest *fetchFriendsFollowers = [[TWRequest alloc]
                                                initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.twitter.com/1/followers/ids.json?screen_name=%@",acct.username]] 
                                                parameters:nil
                                                requestMethod:TWRequestMethodGET];
            [fetchFriendsFollowers performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error){

                if ([urlResponse statusCode] == 200 ) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        NSError *jsonParsingError = nil;
                        NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError];
                        self.responseArray = [response objectForKey:@"ids"];

                        for (int i =0 ; i < [self.responseArray count]; i++) {
                            NSString *user_id = [self.responseArray objectAtIndex:i];


                            TWRequest *fetchFriendsFollowersNames = [[TWRequest alloc]
                                                                     initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://api.twitter.com/1/users/lookup.json?user_id=%@",user_id]] 
                                                                     parameters:nil
                                                                     requestMethod:TWRequestMethodPOST];

                            [fetchFriendsFollowersNames performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error){
                               if ([urlResponse statusCode] == 200 ) {
                                    dispatch_async(dispatch_get_main_queue(), ^{
                                        NSError *jsonParsingError = nil;
                                        NSArray *response = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&jsonParsingError];
                                        for (NSDictionary *user in response) {

                                            [self.userNameArray addObject:[user objectForKey:@"name"]];

                                            [self.tableView reloadData]; 
                                         }



                                   });
                                }



                            }];

                        }

                        NSLog(@"responseArray %@ for user: %@",self.responseArray,username);
                    }); 
                }

            }];

        }
        else{

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                                                            message:@"Please add twitter accounts on your phone and log back in." 
                                                           delegate:nil 
                                                  cancelButtonTitle:@"Ok" 

                                                  otherButtonTitles: nil];
            [alert show];
        }

    }
}];

}

И затем я отображаю его в cellForRowAtIndexPath в списке всех имен пользователей.Он фактически получает список и повторяет имя во всех ячейках.Я знаю, что делаю какую-то глупую ошибку, но не могу понять, потому что я смотрю на это некоторое время и не могу исправить это.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

for (int i=0; i < [self.userNameArray count]; i++) {

    NSLog(@"Text : %@", [self.userNameArray objectAtIndex:i]);
    cell.textLabel.text = [self.userNameArray objectAtIndex:i];

}
return cell;

}

1 Ответ

0 голосов
/ 19 марта 2012
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
     static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }




            cell.textLabel.text = [self.userNameArray objectAtIndex:indexPath.row];
            NSLog(@"Text : %@", [self.userNameArray objectAtIndex:indexPath.row]);

        return cell;
}

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
   {
      return 1;
    }

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  {
    return [self.userNameArray count];
    }

indexPath.row делает работу здесь. Нет необходимости циклически проходить по массиву, tableview будет вызывать каждый объект в массиве для каждой ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...