2009-05-27 5 views
2

Disons que j'ai un NSArrayController qui contient des éléments ayant chacun des propriétés netCost et netProfit et que je veux créer un label Total Percent Profit (contenant la somme des bénéfices divisés par la somme des coûts).Définition de l'agrégat d'une propriété des articles dans un NSArrayController en tant que clé dépendante

Dans la classe de contrôleur avec une référence au contrôleur RAID j'ai essayé de le faire comme suit:

+ (NSSet *)keyPathsForValuesAffectingTotalPercentProfit { 
    return [NSSet setWithObjects: 
      @"[email protected]", 
      @"[email protected]", 
      nil]; 
} 

- (NSDecimalNumber *)totalPercentProfit { 
    NSDecimalNumber *totalProfit = [self valueForKeyPath:@"[email protected]"]; 
    NSDecimalNumber *totalCost = [self valueForKeyPath:@"[email protected]"]; 
    if (!([totalCost compare:[NSDecimalNumber zero]] == NSOrderedSame)) { 
     return [totalProfit decimalNumberByDividingBy:totalCost]; 
    } else { 
     return nil; 
    } 
} 

Pourtant, l'étiquette liée à cette propriété totalPercentProfit ne soit pas rafraîchi lorsque les chemins clés dépendants sont modifié.

Est-ce que quelqu'un peut me diriger dans la bonne direction pour corriger cela?

Répondre

1

Étudiez le Guide de programmation KVO, Registering Dependent Keys. Vous ne pouvez pas observer autant de relations de cette façon, et vous ne pouvez certainement pas observer les agrégats de cette façon. Lisez la section sur "Mac OS X v10.4 et les relations entre plusieurs sous Mac OS X v10.5".

Questions connexes