Sum 十进制数据类型 SwiftUI CoreData

Posted

技术标签:

【中文标题】Sum 十进制数据类型 SwiftUI CoreData【英文标题】:Sum Decimal data type SwiftUI CoreData 【发布时间】:2020-06-08 11:31:32 【问题描述】:

我在使用具有 Decimal 数据类型的“amount”属性的返回方法对过滤后的数据求和时遇到问题。像这样的错误消息,并建议插入' as!金额后面的小数,但没有帮助

无法转换“NSDecimalNumber”类型的值?到预期的参数类型“十进制”

这是我的代码

@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

这是我的实体 ExpenseLog Entities

【问题讨论】:

【参考方案1】:

您的金额属性是可选的,您需要将其考虑在内。你应该像这样实现reduce

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

    return $0

【讨论】:

我明白了,但是当我实现它时仍然有这样的错误消息:'Cannot use instance member 'fetchSumDaily' within property initializer;属性初始化程序在“自我”可用之前运行“有什么想法吗? 这是一个完全不同的问题,你应该可以自己用谷歌搜索,但简而言之,你不能使用可能没有在另一个变量的定义中初始化的变量。也许把它变成一个函数。

以上是关于Sum 十进制数据类型 SwiftUI CoreData的主要内容,如果未能解决你的问题,请参考以下文章

过滤后的 SwiftUI CoreData 列表中的 Sum 属性

SwiftUI - 使用 @ObservedObject 作为同一结构中 @FetchRequest 的结果来强制更新 UI

如何将“$”转换、转换或添加到十进制 SQL SUM()

内置函数二

法语十进制格式数字的 sqlite sum()

qt5cored.dll丢失怎么解决