我尝试在更新期间打印出 tableView 中实际有多少行和部分,这让我想到,我在 table view 数据源方法中返回了多少部分......这是罪魁祸首:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 0;
}
确保您返回 1 而不是 0。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
至少这为我解决了问题......
更新:
在它工作了一段时间后,我又遇到了同样的问题。我稍微修改了应用程序。我的第一个视图是 tableView,当您单击右上角的加号按钮时,您会看到另一个可以输入信息的表。当您单击完成时,信息将使用以下代码添加到 Core Data 模型中:
- (IBAction)doneButtonPressed:(UIBarButtonItem *)sender
{
MoneyBadgeAppDelegate *appDelegate =
[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context =
[appDelegate managedObjectContext];
NSManagedObject *newMoment;
newMoment = [NSEntityDescription
insertNewObjectForEntityForName:@"SpendingMoment"
inManagedObjectContext:context];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *modifiedDate = [dateFormat dateFromString: self.dateTextField.text];
[newMoment setValue: modifiedDate forKey:@"date"];
[newMoment setValue: descTextField.text forKey:@"desc"];
[appDelegate.eventsArray insertObject:newMoment atIndex:0];
NSError *error;
[context save:&error];
[self dismissViewControllerAnimated:YES completion:nil];
}
我确认它已成功放入核心数据模型,方法是在返回第一个屏幕时在我的 viewDidAppear 方法中向控制台打印以下内容。
-(void)viewDidAppear:(BOOL)animated{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SpendingMoment"
inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *items = [self.managedObjectContext
executeFetchRequest:fetchRequest error:&error];
for (SpendingMoment *moment in items) {
NSLog(@"Date: %@, Desc: %@", [moment date], [moment desc]);
}
[self addEvent];
然后我的 addEvent 方法执行此操作:
- (void)addEvent {
[self.tableScreen beginUpdates];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableScreen insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[self.tableScreen reloadData];
[self.tableScreen endUpdates];
@try{
[self.tableScreen scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
@catch(NSException *exception){
}
}
知道这次是什么问题吗???谢谢!