NSMutableArray未被填充

时间:2015-04-08 13:48:53

标签: ios objective-c uitableview nsmutablearray

UITableView的代码不是红色的,只能说我的数组没有被填充。 我正在使用core-database,正如我从打印中看到的那样,我得知它显示我的数据库中有数据。它只是没有显示。 这是我的代码:

 - (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:nil];

    [self reloadArray];

}
-(void) reloadArray
{

    AppDelegate *delegate = [UIApplication sharedApplication].delegate;
    NSManagedObjectContext *context = [delegate managedObjectContext];

    NSFetchRequest *fetch = [[NSFetchRequest alloc]init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:context];
    [fetch setEntity:entity];
    NSManagedObject *object = nil;
    NSError *error;
    NSArray *result = [context executeFetchRequest:fetch error:&error];

    for (int i = 0; i <  [result count]; i ++) {
        object = [result objectAtIndex:i];
        [_projectArray addObject:[object valueForKey:@"name"]];
    }



}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    [self reloadArray];
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return [_projectArray count];

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellID = @"TableCell";
    NSManagedObject *object = [self.projectArray objectAtIndex:indexPath.row];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];

    tableView.delegate = self;
    tableView.dataSource = self;
    cell.textLabel.text = [_projectArray objectAtIndex: indexPath.row];
    return cell; 
}

1 个答案:

答案 0 :(得分:2)

您正在delegate设置dataSourcetableView: cellForRowAtIndexPath:。这些需要在最初设置表视图时设置,时调用delegate方法(因为该方法永远不会被调用)。

要重新进行迭代,请在delegatedataSource中设置viewWillAppear:animated:viewDidLoad属性:

- (void)viewDidLoad {

    tableView.delegate = self;
    tableView.dataSource = self;
}

在调用reloadData之前未能设置这些内容将导致您的delegatedataSource方法都没有被调用。