我正在编写某种预算应用程序。屏幕底部有一个标签,显示某个类别的总成本。我在 ViewWillAppear 方法中设置了必要的标签,但是在第一次加载此视图期间,标签显示为零。如果我导航到导航控制器中的下一个 VC 并返回,则会显示总和。为什么?我也用单独的线程尝试过,但这没有帮助。
我的 viewWillAppear 方法:
- (void)viewWillAppear:(BOOL)animated
{
//Initialize database
[super viewWillAppear:animated];
if(!self.budgetDatabase){
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentationDirectory inDomains:NSUserDomainMask] lastObject];
[url URLByAppendingPathComponent:@"BudgetDatabase"];
self.budgetDatabase = [[UIManagedDocument alloc]initWithFileURL:url];
}
//Total cost/month will be fetched and formatted
NSNumberFormatter *numberFormatter =[[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
//[self.tableView reloadData];
self.sumLabel.text = [[DatabaseFetches budgetPerMonthForManagedObjectContext:self.budgetDatabase.managedObjectContext] getLocalizedCurrencyString];
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}
还有我的 DatabaseFetches 类方法:
+ (NSNumber *)budgetPerMonthForManagedObjectContext:(NSManagedObjectContext *)context
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MainCategory"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"position" ascending:NO];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *matches = [context executeFetchRequest:request error:nil];
CostsPeriodically *totalCostPerMonth = [[CostsPeriodically alloc]init];
for (MainCategory *mainCategory in matches) {
...
}
return totalCostPerMonth.sumPerMonth;
}