0

我正在编写某种预算应用程序。屏幕底部有一个标签,显示某个类别的总成本。我在 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;
}
4

0 回答 0