我正在编写费用跟踪应用程序,这是我的数据模型:
在一个显示定期(例如每天)费用汇总的屏幕中,我想使用NSFetchedResultsController
来获取每个单个期间(例如每天)的所有类别及其费用总计。周期由两个NSDate
变量定义-一个startDate
和endDate
,因为我也将具有每周和每月的视图,我认为这应该取决于。我也希望NSFetchedResultsController
返回类别,即使总和为零。我不知道该如何设置。
我尝试过的操作:我已经在我的NSFetchedResultsController
实体上成功构建了一个NSFetchedResultsController
,并使用了Category
来获取其NSExpressionDescription
关系的总和,但是它总计了所有费用,我找不到指定包含期的方式。
let request = NSFetchRequest(entityName: Category.entityName)
request.resultType = .DictionaryResultType
request.propertiesToFetch = [
"name", "color",
{
let totalColumn = NSExpressionDescription()
totalColumn.name = "total"
totalColumn.expression = NSExpression(format: "@sum.expenses.amount")
totalColumn.expressionResultType = .DecimalAttributeType
return totalColumn
}()
]
request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
let fetcher = NSFetchedResultsController(fetchRequest: request, managedObjectContext: App.state.mainQueueContext, sectionNameKeyPath: nil, cacheName: nil)
我也一直在阅读关于获取的属性的信息,但是在
expenses
触发获取之前,我也找不到在谓词中指示startDate
和endDate
的方法。救命? 最佳答案
您可以在获取请求中添加谓词:
request.predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate];
关于ios - 如何在给定谓词的情况下使用NSFetchedResultsController返回关系属性的总计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37152035/