【问题标题】:Sum Decimal data type SwiftUI CoreDataSum 十进制数据类型 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

【问题讨论】:

    标签: ios swift core-data swiftui


    【解决方案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;属性初始化程序在“自我”可用之前运行“有什么想法吗?
    • 这是一个完全不同的问题,你应该可以自己用谷歌搜索,但简而言之,你不能使用可能没有在另一个变量的定义中初始化的变量。也许把它变成一个函数。
    猜你喜欢
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2014-12-24
    • 2014-10-17
    • 1970-01-01
    相关资源
    最近更新 更多