【问题标题】:Binary Operator '+' cannot be applied to operands of type 'Double' and 'Element' (aka 'AnyObject')二元运算符“+”不能应用于“Double”和“Element”(又名“AnyObject”)类型的操作数
【发布时间】:2015-12-22 08:01:49
【问题描述】:
let totalPrice: Double = price * value
var money: Double = 0
for totalPrice in dataArray {
    money = money + totalPrice
}

无法分配二元运算符“+”

【问题讨论】:

    标签: ios arrays xcode swift for-loop


    【解决方案1】:

    “dataArray”是如何声明的?

    是 [AnyObject] 还是 [Double]

    如果是前者,则需要使用以下命令将其转换为双精度:

    guard let price = totalPrice as? Double else { continue }
    money = money + totalPrice
    

    【讨论】:

    • dataArray 是 NSMutableArray
    • 给上面的代码一个镜头,因为 NSArray/NSMutableArray 是相似的(但不等同于 swift [AnyObject] 数组。因为输入的内容不是专门针对数组的创建而转换的,​​所以你必须转换它使用“as?”我确实建议您使用 swift 数组而不是旧的 NSArray/NSMutableArray。如果您声明它 [Double],则不需要强制转换它。编译器还可以优化静态类型数组,而不是一个动态分配的。
    【解决方案2】:

    totalPrice 是Element 的类型。我认为应该有某种类型的金额是Double,不是吗?

    当您处理货币数据时,请检查NSDecimalNumberDouble 将丢失大量数字。

    【讨论】:

      【解决方案3】:

      问题在于您的 dataArrayAnyObject 类型的数组。如果它真的包含双打,你可以这样迭代:

      for totalPrice in dataArray as! [Double] {
          money = money + totalPrice
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-13
        • 2019-08-23
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多