NSFetchedResultsController

NSFetchedResultsController

我正在编写费用跟踪应用程序,这是我的数据模型:

ios - 如何在给定谓词的情况下使用NSFetchedResultsController返回关系属性的总计-LMLPHP

在一个显示定期(例如每天)费用汇总的屏幕中,我想使用NSFetchedResultsController来获取每个单个期间(例如每天)的所有类别及其费用总计。周期由两个NSDate变量定义-一个startDateendDate,因为我也将具有每周和每月的视图,我认为这应该取决于。我也希望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触发获取之前,我也找不到在谓词中指示startDateendDate的方法。救命?

最佳答案

您可以在获取请求中添加谓词:

request.predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", startDate, endDate];

关于ios - 如何在给定谓词的情况下使用NSFetchedResultsController返回关系属性的总计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37152035/

10-17 02:43