【发布时间】:2022-11-17 09:11:43
【问题描述】:
提前谢谢大家。我是新来的斯威夫特用户界面.我正在尝试查找使用 CoreData 过滤的日期的交易总数@ fetch 按月显示月份按名称销售总额作为当月分组交易时该月的部分标题。
交易实体具有名称、日期和金额属性。如何在 groupTransactionsByMonth 函数中为 ViewModel 中部分的标题标签计算每个月的总和。
这是我的代码
typealias TransactionGroup = OrderedDictionary<String,
[Transaction]>
class: ViewModel: NSObject, ObservableObject {
@Published var transactions = [Transaction]()
func groupTransactionsByMonth()->TransactionGroup{
guard !transactions.isEmpty else {return[]}
let groupedTransactions = Transaction(grouping: transactions, by: {"\ ($0.date?.formatted(.dateTime.year().month(.wide)) ?? "")"})
return groupedTransactions
}
}
我在groupTransactionsByMonth 函数中试过这个:
for(_, value) in groupedTransactions{
var total: Double = 0
for transaction in value {
total += transaction.amount
return total
}
}
但它给出了一个错误
无法将返回表达式 0f 类型“Double”转换为返回类型 'TransactionGroup(又名 'OrderedDictionary<String, 数组>')
@Edit1 at moment I am showing my transactions in forEach as following @ObservedObject private var vm = ViewModel() ForEach(Array(vm.groupTransactionsByMonth()), id: \.key){month, transactions in Section{ ForEach(transactions){transaction in ReportCellView(date: transaction.date ?? Date(), name: transaction.name ?? "", amount: transaction.amount) } } header { HStack { Text(month) Spacer() //here I wanna show monthly total amount for posted month in section header not achieved yet //Text(" Sales") //Text("\(monthlyTotalSalesAmount)") }
【问题讨论】:
-
请。以正确的格式编写代码
标签: arrays swift core-data ordereddictionary