替换NAN值以避免崩溃

时间:2018-05-18 14:09:02

标签: ios objective-c highcharts nan pie-chart

我正在使用HighChart Library(Pie-chart)绘制饼图。  将数据传递给图表我的代码是这样的:

 pie.data = [NSMutableArray arrayWithObjects:@{
                                                      @"name": @"New Jersey",
                                                      @"y": self->numPlusNJ
                                                      },
                    @{
                      @"name": @"Miami FLG",
                      @"y": self->numPlusMiamiFLG
                      },
                    @{
                      @"name": @"Chicago",
                      @"y": self->numPlusChicago
                      },nil];

其中像self-> numPlusNJ这样的值是NSNumbers。 有时在计算后,如0(零)的值出现在NSNumbers中,并且它将这些值作为NAN。 在这些情况下,我在绘制饼图时遇到此错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid number value (NaN) in JSON write'.

我尝试将NAN值替换为0,如下所示:

if(isnan([self->numRPercentNJ doubleValue])){self->numRPercentNJ = 0;}

但是在那种情况下,我无法在字典对象中插入nil。

所以,目前我不确定如何用某种东西替换这个NAN值以避免崩溃。

1 个答案:

答案 0 :(得分:1)

假设您的数字(numPlusMiamiFLG等)是您当前课程的属性,我建议为每个课程实施一个访问者:

- (NSNumber *)numPlusMiamiFLG
{
    // Check if NaN
    if ([[NSDecimalNumber notANumber] isEqualToNumber: _numPlusMiamiFLG] {
        return [NSNumber numberWithDouble:0]; // Or whatever default
    } else {
        return _numPlusMiamiFLG;
    }
}

如果您收到nil / NaN,则可能无法正确初始化您的号码。所以我会仔细检查它们。

另请注意,->不应该用于Objective-C类。 As seen in this SO question