Ich schreibe eine Kosten-Tracker App und das ist Modell meine Daten gegeben zurückzukehren:Wie NSFetchedResultsController verwenden insgesamt einer Beziehung Eigenschaft ein Prädikat
In einem Bildschirm, wo ich eine periodische zeigen (zB täglich) Zusammenfassung der Ausgaben, ich möchte eine NSFetchedResultsController
verwenden, um alle Kategorien und die Summen ihrer Ausgaben für jede einzelne Periode (zB jeden Tag) zu holen. Eine Periode wird durch zwei NSDate
Variablen definiert - eine startDate
und eine endDate
, weil ich auch wöchentliche und monatliche Ansichten habe - was meiner Meinung nach vom Index der Zusammenfassung in der NSFetchedResultsController
abhängig sein sollte. Ich möchte auch die NSFetchedResultsController
die Kategorie zurückgeben, auch wenn die Summe Null ist. Ich weiß nicht, wie ich das einrichten soll.
Was ich versucht habe: Ich habe erfolgreich ein NSFetchedResultsController
auf meiner Category
Einheit gebaut und verwendet, um ein NSExpressionDescription
die Summe seiner expenses
Beziehung zu bekommen, aber es summiert alle Kosten, und ich kann nicht einen Weg zu spezifizieren eine finden inklusive Zeitraum
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)
Ich habe auch über geholt Eigenschaften gelesen, aber ich kann auch nicht einen Weg finden, die startDate
und endDate
im Prädikat vor dem NSFetchedResultsController
Feuer, um anzuzeigen, die holen. Hilfe?
Gibt es einen Grund für 'NSFetchedResultsController' mit? Ich glaube nicht, dass es in der Lage ist, zu liefern, was Sie wollen (zumindest nicht ohne viel Arbeit). Es könnte für einen einzelnen Zeitraum (Tag, Woche, usw.) möglich sein, aber Sie brauchen * jeden * einzelnen Zeitraum. Sie müssten das Prädikat neu erstellen und den Abruf für jede Periode wiederholen. Es ist möglicherweise einfacher, einfach alle Ausgaben zu durchlaufen und den Gesamtbetrag für jede Kombination aus Kategorie und Zeitraum zu berechnen. – pbasdf