2010-06-25 10 views
0

J'essaie de tracer un diagramme à barres avec Core-Plot avec un tableau (le contenu est NSIntegers) étant donné une vue auparavant. Après transférer le tableau dans un NSInteger, je dois le convertir en un NSDecimalNumber, et dans ce processus, mon NSInteger (par exemple 45) devient « 60900224 » ...Problème avec NSNumber et traçage d'un graphe avec Core-Plot

est ici l'extrait de code:

-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{ NSInteger *values = [Werte objectAtIndex:index]; 
    NSDecimalNumber *num = nil; 
    if ([plot isKindOfClass:[CPBarPlot class]]) { 
     switch (fieldEnum) { 
      case CPBarPlotFieldBarLocation: 
       num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:index]; 
       break; 
      case CPBarPlotFieldBarLength: 
       //num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:(index+1)*(index+1)]; 
       num = [NSNumber numberWithInt:values]; 
       if ([plot.identifier isEqual:@"Bar Plot 2"]) 
        num = [num decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:@"10"]]; 
       break; 
     } 

    } 
    return num; 
} 

Merci pour votre aide !!

Répondre

0

NSInteger n'est pas un type d'objet et ne peut pas être stocké dans un NSArray (que votre Werte semble être). Vous semblez convertir implicitement d'un pointeur en un entier.

Au lieu de cela, vous devriez toujours mettre NSNumber objets dans le tableau, puis obtenir des valeurs NSInteger de ceux via integerValue:

NSInteger value = [[Werte objectAtIndex:index] integerValue]; 
+0

Ok, je vous remercie beaucoup, ce fut mon problème avec NSNumberFormatter le graphique à barres travaux! – Jonathan