Проблема с NSNumber и построение графика с Core-Plot - PullRequest
0 голосов
/ 25 июня 2010

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

Вот фрагмент кода:

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

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

1 Ответ

0 голосов
/ 25 июня 2010

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

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

NSInteger value = [[Werte objectAtIndex:index] integerValue];
...