将double转换为NSDecimalNumber时收到警告

时间:2015-06-16 06:41:58

标签: ios objective-c methods double nsdecimalnumber

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

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

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

但我收到以下警告:

  

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

我做错了什么,我该如何解决?

5 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

试试这个。它可能会成功

class AddUserIdToUserInfos < ActiveRecord::Migration
  def self.up
    change_table :user_infos do |t|
      t.references :user, foreign_key: true, index:true
    end
  end

  def self.down
    t.remove_references(:user)
  end
end

答案 2 :(得分:0)

numberWithDouble:方法返回一个NSNumber对象但你想要返回NSDecimalNumber。

将其更改为

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

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

答案 3 :(得分:0)

尝试以下代码 -

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

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

答案 4 :(得分:0)

numberWithDouble:NSDecimalNumber的方法返回NSNumber。 在你的方法中你想返回小数,所以如果你分配一个带有小数值的新NSDecimalNumber(你的例子中的金额)就可以了。

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

ValidationGroup