Ios 二进制运算符'+';无法应用于类型为';双倍';和';元素';(也称为任何对象)

Ios 二进制运算符'+';无法应用于类型为';双倍';和';元素';(也称为任何对象),ios,arrays,xcode,swift,for-loop,Ios,Arrays,Xcode,Swift,For Loop,无法分配二进制运算符“+”如何声明“dataArray” 它是[AnyObject]还是[Double] 如果是前者,则需要使用以下命令将其转换为双精度: let totalPrice: Double = price * value var money: Double = 0 for totalPrice in dataArray { money = money + totalPrice } totalPrice是元素的类型。我想应该有一种金额是双倍的,不是吗 此外,在处理货币数据时,

无法分配二进制运算符“+”

如何声明“dataArray”

它是[AnyObject]还是[Double]

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

let totalPrice: Double = price * value
var money: Double = 0
for totalPrice in dataArray {
    money = money + totalPrice
}

totalPrice是
元素的类型。我想应该有一种金额是双倍的,不是吗


此外,在处理货币数据时,请检查小数位数
Double
将丢失有效数字。

问题在于您的数据数组是AnyObject类型的数组。如果它确实包含double,您可以这样迭代:

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

dataArray是NSMutableArrayGive上述代码作为NSArray/NSMutableArray的快照与swift[AnyObject]数组类似(但不等同于swift[AnyObject]数组)。因为输入的内容不是在创建数组时专门强制转换的,所以必须使用“as”来强制转换它不过,我建议您使用swift数组,而不是旧的NSArray/NSMutableArray。如果声明为[Double],则无需强制转换。编译器还可以优化静态类型的数组,而不是动态分配的数组。
for totalPrice in dataArray as! [Double] {
    money = money + totalPrice
}