2017-03-09 12 views
0

NSFetchedResultsControllerをUITableViewControllerで使用しています。セクションはNSFetchedResultsControllerを使用すると、ヘッダにcoredataの属性を組み合わせることは可能ですか

fetchedResultsController = NSFetchedResultsController(fetchRequest: noteRequest, managedObjectContext: moc, sectionNameKeyPath: #keyPath(Note.id), cacheName: nil)

に基づいて描かれている私は、新しい属性を作成せずに別の属性(Note.date)と属性にNote.idを組み合わせることができます方法はありますか?

+0

私たちがどのように答えようとしているかは、達成しようとしているものによってどのように異なるのでしょうか。たとえば、どのデータ型を結合しようとしていますか? – andrewbuilder

答えて

2

はい、可能です。 sectionNameKeyPathは、オブジェクトが処理できる任意のプロパティ(必ずしもcore-dateで定義されているわけではありません)でもかまいません。必要なものに基づいてmanagedObjectサブクラスにプロパティを追加し、それをsectionNameに使用できます。 BUT the sectionsNamesはデータと同じ順序に従わなければならず、並べ替え記述子はコアデータプロパティに基づいていなければなりません。たとえば、データが日付別に注文された場合、曜日や時間に基づいてセクションを作成できますが、重要度に基づいてセクションを作成することはできません。まず、重要度に基づいてセクションを作成します。

sectionNamesは一意である必要がありますが、表示する必要はありません。だから、日付別にソートし、1時間ごとにセクション化する場合は、sectionNamesを1:00、2:00などのように使用しないでください。ユニークではないからです(毎日繰り返します)。代わりに、2017-03-01-1:00などを使用する必要があります。しかし、なぜあなたは1時00分だけ表示することができるヘッダーを表示します。

また、sectionNameに使用されるメソッドは、fetchedResultsControllerがロードされるときに、のすべての要素であるに対して呼び出されます。だから、リソース集約的なことは何もしないでください - 日付フォーマッタを作成するように。

+0

洞察をいただきありがとうございます。非常に明快な答え。 –

関連する問題