【问题标题】:Replace NAN value in order to avoid Crash替换 NAN 值以避免崩溃
【发布时间】:2018-05-18 14:09:02
【问题描述】:

我正在使用 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。 有时在 NSNumbers 中出现像 0(零)这样的计算值后,它将这些值作为 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 值以避免崩溃。

【问题讨论】:

  • 尝试使用null 而不是0

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


【解决方案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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多