2015-06-16 2 views
0

Я пытаюсь преобразовать double в NSDeciamlNumber. Вот мой код:Получить предупреждение при преобразовании double в NSDecimalNumber

- (NSDecimalNumber *)myMethod { 
    double amount = 42; 
    ... 

    return [NSDecimalNumber numberWithDouble:amount]; // Get warning here 
} 

Но я получаю следующее предупреждение:

Incompatible pointer types returning 'NSNumber *' from a function with result type 'NSDecimalNumber *'

Что я делаю не так, и как я могу это исправить?

ответ

0

numberWithDouble: метод NSDecimalNumber возвращает NSNumber. В вашем методе вы хотите вернуть десятичное число так, чтобы оно было ОК, если вы назначили новый NSDecimalNumber с десятичным значением (количество в вашем примере).

Может использовать следующий способ избавиться от ошибки:

-(NSDecimalNumber *)myMethod 
{ double amount = 42; ... 
    return [[NSDecimalNumber alloc] initWithDouble: amount]; 
} 
0

Согласно документации [NSDecimalNumber numberWithDouble: _] возвращает NSNumber, так что вы должны изменить объявление метода

- (NSNumber *)myMethod { 
    double amount = 42; 
    ... 

    return [NSDecimalNumber numberWithDouble:amount]; // Get warning here 
} 
0

Попробуйте это. Он может работать

- (NSNumber *)myMethod { 
    double amount = 42; 
    [NSNumber numberWithDouble:amount] 
    return [NSDecimalNumber numberWithDouble:amount]; 
} 
0

numberWithDouble: метод возвращает объект NSNumber, но вы думаете, что для возвращения NSDecimalNumber.

Изменить его

- (NSDecimalNumber *)myMethod { 
    double amount = 42; 

    return [[NSDecimalNumber alloc]initWithDouble:amount]; 
} 
0

Попробуйте ниже code-

- (NSDecimalNumber *)myMethod { 
    double amount = 42; 
    ... 

    return [[NSDecimalNumber alloc] initWithDouble: amount]; 
}