述語

2016-05-11 22 views
0

私は経費トラッカーアプリを書いていると、これは私のデータモデルである一定の関係プロパティの合計を返すためにNSFetchedResultsControllerを使用する方法:述語

私は(定期的に表示し、一の画面で

enter image description here

毎日のように)毎月(例えば毎日)のすべてのカテゴリと費用の合計をで取得するには、NSFetchedResultsControllerを使用します。期間は2つのNSDate変数で定義されています(startDateendDate)。私は週報と月報も表示するので、NSFetchedResultsControllerの要約のインデックスに依存する必要があります。また、合計がゼロであっても、NSFetchedResultsControllerがカテゴリを返すようにします。私はこれを設定する方法を知らない。私は正常に私のCategoryエンティティにNSFetchedResultsControllerを構築し、そのexpenses関係の合計を取得するために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) 

私はまた、フェッチされたプロパティについて読んでいましたが、私はまた、フェッチNSFetchedResultsController火災の前に、述語でstartDateendDateを示すための方法を見つけることができません。助けて?

+0

'NSFetchedResultsController'を使用する理由はありますか?私はあなたが望むものを提供できるとは思わない(少なくとも、多くの仕事をしていないわけではない)。単一の期間(曜日、週など)で可能かもしれませんが、*すべての*単一期間が必要です。述部を再構築し、フェッチを各期間ごとに再実行する必要があります。すべての経費を繰り返し、カテゴリと期間の組み合わせごとに合計金額を計算するほうが簡単かもしれません。 – pbasdf

答えて

0

あなたのフェッチ要求に述語を追加することができます。

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