Apple のドキュメントからの説明が必要です
フェッチ要求には、少なくとも 1 つのソート記述子が必要です。コントローラーがセクションを生成する場合、配列内の最初のソート記述子を使用して、オブジェクトをセクションにグループ化します。そのキーは sectionNameKeyPath と同じであるか、そのキーを使用する相対順序が sectionNameKeyPath を使用する順序と一致する必要があります。
NSFetchedResultsController
次の方法で with セクションを使用しています
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:mainContext
sectionNameKeyPath:@"paymentDate"
cacheName:nil];
ドキュメントから理解したように、少なくとも並べ替え記述子NSFetchRequest
を渡す必要があります。NSFetchedResultsController
ただし、セクションを使用するため、ソート記述子は次のようにする必要があります。
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"paymentDate" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"paymentCode" ascending:YES],
nil]];
次のようなソート記述子を使用する場合
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"paymentCode" ascending:YES],
nil]];
次のようなエラーが表示されます
NSFetchedResultsController エラー: インデックス X でフェッチされたオブジェクトには、順不同のセクション名 Y があります。オブジェクトはセクション名でソートする必要があります'
私の場合、 を使用[NSSortDescriptor sortDescriptorWithKey:@"paymentDate" ascending:YES]
すると、問題を克服できます。たぶん私はラッキーです;)。
しかし、それはどういう意味ですか、またはそのキーを使用した相対的な順序は、 sectionNameKeyPath を使用したものと一致する必要がありますか? 説明をいただけますか?
前もって感謝します。