如何查找数组类型NSDecimalNumber的总和

时间:2015-04-14 01:49:05

标签: arrays swift sum nsdecimalnumber

我正在Swift中构建预算应用。

NSDecimalNumber 第一次在操作后添加到数组中(如下所示)。

然后 NSDecimalNumber将转换为TableView的CurrencyFormat,并附加到单独的字符串数组。

如何找到第一个 NSDecimalNumbers数组的总和来创建可用金额标签?

var adding: [NSDecimalNumber] = [5, 6, 5.55, 6.55, 1]

我尝试将此数字转换为NSDecimal(addingAmount),然后将其附加到上面的数组中(添加):

let addingAmount = NSDecimalNumber(string: textInput.text) / decimal100
    adding.append(addingAmount)
    println(adding)
    println(reduce(adding, 0, +)) // prints 15

不幸的是,println(添加)有效,但没有打印任何内容。

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:4)

这是因为没有二元运算符的定义' +'对于NSDecimalNumber类型。因此,一旦您手动定义运算符,就可以执行此操作。

func +(lhs: NSDecimalNumber, rhs: NSDecimalNumber) -> NSDecimalNumber {
    return lhs.decimalNumberByAdding(rhs)
}

答案 1 :(得分:-3)

如果您只想要第一个数组的总和,那么您可以将其转换为加倍,并将其与mapreduce一起添加。

var adding: [NSDecimalNumber] = [5, 6, 5.55, 6.55, 1]
let test = adding.map { Double($0) }.reduce(0, combine: +)
println(test) // prints out 24.1