Замените значение NAN, чтобы избежать сбоя - PullRequest
0 голосов
/ 18 мая 2018

Я рисую круговые диаграммы с помощью библиотеки HighChart ( Круговая диаграмма ).При передаче данных в диаграмму мой код выглядит так:

 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 голосов
/ 18 мая 2018

Предполагая, что ваши числа (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. Как видно в этом вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...