10

単語の最初の文字でグループ化しようとしているWord:NSManagedObjectサブクラスがあります。次に、各セクションで、単語の長さが同じ場合に英数字の並べ替えを維持しながら、長さのプロパティで並べ替えようとしています。だからそれは次のように見えるでしょう

言葉

  • リンゴの長さ=5
  • 斧の長さ=3
  • 午前長さ=2

Bワード

  • ベインの長さ=4
  • ボートの長さ=4
  • バッグの長さ=3

したがって、最初に新しいNSFetchRequestを初期化します。次に、並べ替え記述子を追加します。最初に値(単語のみ)で並べ替え、次に長さで並べ替えます。最後に、fetchedResultsControllerを初期化し、グループ値を使用して最初の文字でグループ化します。これが私のコードですが、望ましい結果が得られていません。どんな助けでも大歓迎です。

@interface Word : NSManagedObject

@property (nonatomic, retain) NSString * value;
@property (nonatomic, retain) NSString * group;
@property (nonatomic, retain) NSNumber * length;

@end

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Word"];
request.sortDescriptors = [NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"value" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)],
                               [NSSortDescriptor sortDescriptorWithKey:@"length" ascending:NO], nil];

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                        managedObjectContext:self.wordDatabase.managedObjectContext
                                                                          sectionNameKeyPath:@"group"
                                                                                   cacheName:nil];
4

1 に答える 1

23

最初のソート記述子は、として使用されるキー用sectionNameKeyPath、2番目のソート記述子はキー用length、最後のソート記述子はvalue:用である必要があります。

request.sortDescriptors = [NSArray arrayWithObjects:
    [NSSortDescriptor sortDescriptorWithKey:@"group" ascending:YES],
    [NSSortDescriptor sortDescriptorWithKey:@"length" ascending:NO],
    [NSSortDescriptor sortDescriptorWithKey:@"value" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)],
    nil];
于 2013-01-29T06:14:43.313 に答える