Заполненный NSArray непреднамеренно теряет свой контент - PullRequest
0 голосов
/ 16 октября 2011

Массив заполнен правильно, но когда я снова пытаюсь получить доступ к содержимому, кажется, что он снова пуст! пытаясь разместить столько кода, сколько необходимо. Спасибо за помощь.

Я объявляю данные appData в файле .h:

@interface userViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

    NSArray *appData;

    IBOutlet UIActivityIndicatorView *activityIndicator;
    IBOutlet UILabel *status;
    IBOutlet UITableView *mainTable;
}

@property (nonatomic, retain) NSArray *appData;
@property (nonatomic, retain) UIActivityIndicatorView *activityIndicator;
@property (nonatomic, retain) UILabel *status;
@property (nonatomic, retain) UITableView *mainTable;


- (IBAction) refresca: (id)sender;

- (void)getData: (NSString *)usuari: (NSString *)clau;

@end

в .m файл синтезируется и выпускается. appData правильно заполняется, когда заканчивается запрос на подключение, а затем, когда я перезагружаю табличное представление, когда выполняется numberOfRowsInSection (в то время как цикл также для проверки), appData пуст!

- (void)requestFinished:(ASIHTTPRequest *)request {
    NSLog(@"%@", [request responseString]);

    self.appData = [[request responseString] componentsSeparatedByString: @"#"]; 

    int x =0;

    while (x<[appData count] - 1)
    {
        NSLog(@"Aplicaciones = %@",[appData objectAtIndex: x]);
        x = x+1;
    }

    [activityIndicator stopAnimating];
    activityIndicator.hidden = YES;
    status.hidden = YES;
    mainTable.hidden = NO;

    [mainTable reloadData];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{     
    if ([appData count] != 0)
    {
        NSLog(@"Counter = %@",[appData objectAtIndex:0]);
    }

    return [appData count]-1;
}

1 Ответ

2 голосов
/ 16 октября 2011

Несколько вещей здесь.

Ваш тестовый вход в систему numberOfRows приведет к зависанию приложения, если когда-либо в appdata будет ненулевое число.

Вы уверены, что получаете тот же appData объект, который вы заполнили в requestFinished?

Я предлагаю использовать метод доступа в numberOfRows, как в [self.appData count], что может решить проблему.

И есть ли какая-то конкретная причина, по которой вы вычитаете ее из числа? Как вы потеряете один элемент из массива в tableView таким образом

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