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