我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;
}
答案 0 :(得分:2)
您正在delegate
设置dataSource
和tableView: cellForRowAtIndexPath:
。这些需要在最初设置表视图时设置,不时调用delegate
方法(因为该方法永远不会被调用)。
要重新进行迭代,请在delegate
或dataSource
中设置viewWillAppear:animated:
和viewDidLoad
属性:
- (void)viewDidLoad {
tableView.delegate = self;
tableView.dataSource = self;
}
在调用reloadData
之前未能设置这些内容将导致您的delegate
或dataSource
方法都没有被调用。