2010-06-25 3 views
0

Я пытаюсь построить диаграмму стержня с ядром с массивом (содержимое NSIntegers) с одним представлением раньше. После перенося на массив в NSInteger, я должен преобразовать его в NSDecimalNumber, и в этом процессе, мой NSInteger (например, 45) становится «60900224» ...Проблема с NSNumber и построение графика с помощью Core-Plot

Вот код экстракт:

-(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; 
} 

Спасибо за помощь!

ответ

0

NSInteger не является типом объекта и не может быть сохранен в NSArray (что должно выглядеть Werte). Вы, кажется, неявно конвертируете из указателя в целое.

Вместо этого, вы должны всегда ставить NSNumber объекты в массив, а затем получить значения NSInteger из тех, кто с помощью integerValue:

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

Хорошо, спасибо большое, это была моя проблема, с NSNumberFormatter гистограмме работает! – Jonathan

Смежные вопросы