NSNumber存在问题并使用Core-Plot绘制图形

时间:2010-06-25 10:18:04

标签: cocoa core-plot nsnumber

我尝试在给出一个视图之前用一个数组(内容是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 :(得分:0)

NSInteger不是对象类型,无法存储在NSArray(您的Werte似乎是)中。您似乎隐式地将指针转换为整数。

相反,您应始终将NSNumber个对象放入数组中,然后通过integerValue获取NSInteger值:

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