替换NAN值以避免崩溃

西瓦姆·特里帕蒂(Shivam Tripathi)

我正在使用HighChart库(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'.

我试图像这样用0替换NAN值:

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

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

因此,目前我不确定如何用某种方式替换此NAN值以避免崩溃。

韦斯利·麦克洛伊

假设您的数字(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类上使用。从这个SO问题中可以看出

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章