提问者:小点点

SumDecimal数据类型SwiftUI CoreData


我有一个问题,对过滤数据的总和使用返回方法从“数量”属性,有十进制数据类型。 错误消息如下所示,并建议插入“as! 小数“,但这无济于事

无法转换类型“NSDecimalNumber?”的值? 应为参数类型“Decimal”

这是我的代码

@FetchRequest(
     entity: ExpenseLog.entity(),
     sortDescriptors: [
      NSSortDescriptor(keyPath: \ExpenseLog.amount, ascending: false)
     ]
     ,predicate: NSPredicate(format: "(date => %@) AND (date <= %@)", DateHelper.startOfDay(day: NSDate()), DateHelper.endOfDay(day: NSDate()))
 )
 private var fetchSumDaily: FetchedResults<ExpenseLog>

var sumHarian: Decimal {
    fetchSumDaily.reduce(0) { $0 + $1.amount}
}

这是我的实体支出日志实体


共1个答案

匿名用户

您需要考虑的金额属性是可选的。 您应该像这样实现reduce

let sum = fetchSumDaily.reduce(Decimal(0.0)) {
    if let amount = $1.amount as Decimal? {
        return $0 + amount
    }

    return $0
}

相关问题