Ios 将double转换为NSDecimalNumber时收到警告

Ios 将double转换为NSDecimalNumber时收到警告,ios,objective-c,methods,double,nsdecimalnumber,Ios,Objective C,Methods,Double,Nsdecimalnumber,我正在尝试将double转换为NSDeciamlNumber。这是我的密码: - (NSDecimalNumber *)myMethod { double amount = 42; ... return [NSDecimalNumber numberWithDouble:amount]; // Get warning here } 但我得到以下警告: 不兼容的指针类型从结果类型为“NSDecimalNumber*”的函数返回“NSNumber*” 我做错了什么,如何修

我正在尝试将
double
转换为
NSDeciamlNumber
。这是我的密码:

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

    return [NSDecimalNumber numberWithDouble:amount]; // Get warning here
}
但我得到以下警告:

不兼容的指针类型从结果类型为“NSDecimalNumber*”的函数返回“NSNumber*”


我做错了什么,如何修复它?

根据文档[NSDecimalNumber numberWithDouble:\u]返回一个NSNumber,因此您应该更改方法声明

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

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

试试这个。也许会成功

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

numberWithDouble:
方法返回一个NSNumber对象,但您假设返回NSDecimalNumber

换成

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

    return [[NSDecimalNumber alloc]initWithDouble:amount];
}
请尝试以下代码-

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

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

numberWithDouble:NSDecimalNumber的方法返回NSNumber。 在您的方法中,您希望返回decimal,所以如果您使用十进制值(示例中的金额)分配一个新的NSDecimalNumber,则可以

可以使用以下方法消除错误:

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