从Core Data Attribute Swift声明一个数组

时间:2017-10-27 13:59:56

标签: arrays swift core-data

我有一个名为Transaction的实体和一个名为amount的属性。 我想声明一个来自amount属性的数组,该数组可以使用求和数组示例代码

sum = array_name.reduce(0,+)

我试图以这种方式从Attribute

声明一个数组
var amountArray = 
 (self.transactionsArray as NSArray).value(forKey: "amount") as! NSArray
sum = amountArray.reduce(0,+)

但它不起作用并抛出错误

Ambiguous reference to member '+'

1 个答案:

答案 0 :(得分:0)

使用Swift 4,@ MartinR的建议应该有效。如果没有,您应该提供有关代码的更多信息,可能会详细介绍Transaction的详细信息,amount变量的类型以及transactionsArray的确切性质。

假设transactionsArray被声明为非可选[Transaction]amount是核心数据数字类型之一,

let sum = transactionsArray.reduce(0) { $0 + $1.amount }

......是对的。您可以通过声明sum

的类型使其更加明确
let sum : Double = transactionsArray.reduce(0) { $0 + $1.amount }

(请务必在此处使用与amount相同的类型,我只是猜测Double)。

可以通过NSArray@sum运算符获得总和,例如

if let sum = (transactionsArray as NSArray).value(forKeyPath:"@sum.amount") as? Double {
    ....
}

由于@vadian提到的as? Double缺少类型信息,因此需要NSArray