无法将“__NSTaggedDate”类型的值转换为“NSNumber”

时间:2017-01-17 17:48:18

标签: ios swift

我有一个字典数组,其中包含In [301]: bnds=np.array((np.zeros(8),np.ones(8))).T In [302]: bnds Out[302]: array([[ 0., 1.], [ 0., 1.], [ 0., 1.], [ 0., 1.], [ 0., 1.], [ 0., 1.], [ 0., 1.], [ 0., 1.]]) In [303]: minimize(foo, x0, method='SLSQP',bounds=bnds) Out[303]: fun: -14.999999999999773 jac: array([-2., -3., -4., -6., 0., 0., 0., 0., 0.]) message: 'Optimization terminated successfully.' nfev: 20 nit: 2 njev: 2 status: 0 success: True x: array([ 1., 1., 1., 1., 0., 1., 0., 0.]) 键和NSDate值(Double),我想计算所有值的总和,如下所示:

[NSDictionary]

但我得到了这个奇怪的错误:

let sum = results.flatMap { $0.allValues.map { $0 as! Double } }.reduce(0, +)

任何人都知道我的总和计算是什么问题?

编辑:

我得到的值来自Core Data。这是我检索它们的方式:

Could not cast value of type '__NSTaggedDate' to 'NSNumber'

1 个答案:

答案 0 :(得分:1)

fetch核心数据.dictionaryResultType会返回[[String:Any]]

返回数组的格式为:

[["dateDescr" : <date1>, "sumDescr" : <double1>], ["dateDescr" : <date2>, "sumDescr" : <double2>]]

映射键sumDescr的值并添加它们,它总是很好的编程习惯来捕捉潜在的错误:

do {
    let results = try context.fetch(request) as! [[String:Any]]
    let sum = results.map { $0["sumDescr"] as! Double }.reduce(0.0, +)
} catch {
    print(error)
}