填充的NSArray无意中失去了它的内容

时间:2011-10-16 18:19:57

标签: objective-c cocoa-touch uitableview nsarray

数组已正确填充,但当我尝试再次访问内容时,似乎再次为空!!试图根据需要发布尽可能多的代码。谢谢你的帮助。

我在.h文件中声明了appData:

@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被正确填充,然后,当我重新加载tableview时,当执行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 个答案:

答案 0 :(得分:2)

这里有几件事。

如果appdata的计数非零,那么numberOfRows中的测试记录将导致应用挂起。

您确定获得了appData中填充的requestFinished对象吗?

我建议使用numberOfRows中的访问器,如[self.appData count]中那样,可能会解决问题。

你有没有从计数中减去一个特定原因?因为你将从tableView中的数组中丢失一个元素