1

「経費」と呼ばれるエンティティを持つコアデータがあります。エンティティ:「経費」属性:「日付」、「カテゴリ」、「金額」.....

私の質問は、年または年月ごとにどれだけの費用を取得できるかということです。フェッチが期間またはカテゴリに基づいているかどうかはわかっています。NSPredicate を使用して、フェッチした結果をフィルタリングできます。しかし、私の頭の中の「日付」属性は年と月で区切る必要があるため、SQLクエリのようにグループ化できます。フェッチで直接それを行うことは可能ですか? それ以外の唯一の方法は、データ全体を NSArray にフェッチし、NSPredicate でいくつかのフィルターを実行することです。

これを何日も検索しましたが、直接的な答えは見つかりません。今、私は実際には、直接的な解決策はないと信じています。しかし、すべての開発者がこの問題を解決したに違いないため、誰かがより良い解決策を提供できるかどうかを確認したいと思います。

どんな提案でも大歓迎です、ありがとうございます:)

============================追加===================== == また、インデックス付きリストの手法については、私の知る限り、「年月」で取得した結果を UITableView にインデックスリスト化したいと考えています。私は、すべてのインデックス付きの「年月」に従って、すべての配列に経費を提供する可能性があります。それを行うより良い方法はありますか?

データ構造に基づく私の考えは、エンティティ(年)から多エンティティ(、月、年-月)から多エンティティ(年-月、日付、金額....)から多対多の関係を構築することです。 . インデックス付きの UITableView のすべての配列を取得するときに、これにより便利になるかもしれません。

4

2 に答える 2

2

エンティティに日付コンポーネントを格納するためにさらに 3 つの属性を追加し (日付コンポーネントを日、月、年として分離し、これら 3 つのエントリを格納します)、完全な日付を格納するための日付属性も追加します。年または年月ごとにデータを取得する場合は、述語を使用します。

NSPredicate *filter = [NSPredicate predicateWithFormat:@"month=%d AND year=%d",month,year];
[request setPredicate:filter];
 NSArray *results = [self.moContext executeFetchRequest:request error:nil];
 if(results.count > 0) {
                       //do your manipulations.
            }
于 2013-05-10T05:57:34.417 に答える
2

@readonly プロパティ「年」と「月」を Expense クラスに実装し、それらを述語で使用できます。これらの値を個別に保存する必要はありません。NSDateComponents を使用してゲッターで計算するだけです。

于 2013-05-10T05:58:49.890 に答える