2

NSFetchedResultsControllerコアデータを取得してテーブルにデータを入力するために使用する があります。

現在、データを並べ替えるには、以下のコードを使用しています。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"month" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];

[fetchRequest setSortDescriptors:sortDescriptors];

month はNSStringその年の月の であるため、これは現在、その年の月をアルファベット順にソートします。

しかし、私がしたいのは、今日の日付に最も近い順に月を表示することです。

たとえば、今日が 4 月の場合、4 月が一番上に表示され、その後に 5 月、6 月、7 月と続きます。

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

1

カスタム記述子は難しいことではありませんが、カスタムのSortDescriptorがあなたのケースで使用できるとは思いません(コアデータのソート記述子はカスタムコードAFAIKを実行できません)


いずれかの方法:

記述子を実装して、obj1とobj2が互いにどのように関連しているかを返すカスタムコンパレータブロックを渡します。

サンプルコード:

id desc = [[NSSortDescriptor alloc] initWithKey:@"month" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    ...
}];

retval:

typedef NS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
于 2013-01-07T16:51:55.493 に答える