Подытог в cellForRowAtIndexPath - PullRequest
       1

Подытог в cellForRowAtIndexPath

0 голосов
/ 27 января 2012

У меня есть две сущности, журнал и учетные записи. Отношение один ко многим: журнал имеет только одну учетную запись. В аккаунте много журналов. Я хочу показать общую сумму для каждой учетной записи на основе ее журналов, но я не знаю как. В настоящее время общая сумма, которую я получаю для каждого аккаунта, одинакова:

В моем UITableView (Accounts.m) у меня есть:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    
    static NSString *CellIdentifier = @"Cell";
    XbAccountsN *cell = (XbAccountsN *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    if (cell == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"XbAccountsN" owner:self options:nil];
        cell = xbAccountsN;
        self.xbAccountsN = nil;
        GMAccount *awCuentasy = (GMAccount *)[self.fetchedResultsController objectAtIndexPath:indexPath];
        cell.cnAlias.text = awCuentasy.cnAlias;
        NSDecimalNumber *saldoAc = [NSDecimalNumber decimalNumberWithString:@"0.0"];
        for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
            NSLog( @"Looping");
            NSDecimalNumber *objectExpenseNumber = [object valueForKeyPath:@"journals.@sum.pzAmount01"];
            balanceC = [balanceC decimalNumberByAdding:objectExpenseNumber];
        }
        NSNumberFormatter* bf = [[NSNumberFormatter alloc] init];    
        [bf setNumberStyle:NSNumberFormatterCurrencyStyle];
        cell.cnSaldo.text = [bf stringFromNumber: balanceC];
        [bf release];

Я получаю одинаковую сумму за каждую учетную запись, даже если у меня есть только две учетные записи и несколько журналов, связанных с каждой учетной записью. Как я могу представить правильный баланс для каждого аккаунта? Не могли бы вы мне помочь?. Заранее спасибо.

1 Ответ

1 голос
/ 27 января 2012

Хорошо.Кажется вы устанавливаете метку своей ячейки в блоке if (cell == nil) .Это не правильно.Обратите внимание, что в табличном представлении ячейки перерабатываются , и когда создается достаточное количество ячеек, блок больше не вызывается, поскольку в очереди на переработку доступны старые ячейки.Хорошо.Здесь правильный путь ниже.(проверьте синтаксис, я написал здесь).

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    
    static NSString *CellIdentifier = @"Cell";

    XbAccountsN *cell = (XbAccountsN *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;

    if (cell == nil) {
        // Init new cell from nib archive (assuming the cell is the top most object in your xib)
        cell = (UITableviewCell*)[[[NSBundle mainBundle] loadNibNamed:@"XbAccountsN" owner: nil options:nil] objectAtIndex: 0];
    }

// Calculate your sum for the given awCuentasy
    GMAccount *awCuentasy = (GMAccount *)[self.fetchedResultsController objectAtIndexPath:indexPath];

    cell.cnAlias.text= awCuentasy.cnAlias;
    NSDecimalNumber *saldoAc = [NSDecimalNumber decimalNumberWithString:@"0.0"];
    for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
            NSLog( @"Looping");
            NSDecimalNumber *objectExpenseNumber = [object valueForKeyPath:@"journals.@sum.pzAmount01"];
            balanceC = [balanceC decimalNumberByAdding:objectExpenseNumber];}
    NSNumberFormatter* bf = [[NSNumberFormatter alloc] init];    
        [bf setNumberStyle:NSNumberFormatterCurrencyStyle];
        cell.cnSaldo.text= [bf stringFromNumber: balanceC];
        [bf release];
}

return cell;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...