NSFetchedResultsController
(NSFRC) を使用して情報を に表示していUITableView
ます。ユーザーがセルをアルファベット順ではなくセクションごとに並べ替えるオプションを作成しようとしています。問題は、ダウンロードされた情報を使用してセクションが決定されることです。これに加えて、各項目のセクションは比較的頻繁に変更されるため、セクションを保存したくありません。同様の問題の調査で、一時的な属性の言及に気づきましたが、データが既に読み込まれたらすべての計算が行われることを念頭に置いて使用できるかどうかわからない前に、これらを使用したことはありません、また、このソリューションが以前の と互換性があることも望んでいCore Data database
ます。また、私はCore Data
, (それもObjective-C
!) が特に得意ではないので、これをどのように行うか完全にはわかりません。
したがって、一時的な属性を使用している場合は、次のことを行います (一時的な属性が正しい方法であるかどうかわからないため、この次のビットは理論的なものです)。0 ~ 3 の 4 つのセクションが必要です (TableView delegate
並べ替えの問題を回避するために、 を使用して名前を変更します)。計算が完了すると、各セルに一時属性が割り当てられます (必要な場合、デフォルトのセクションは 2 になります)。これがすべて理にかなっていることを願っています。
さて、いくつかの理論的なコードについて説明します。最初に、データ モデル画面で一時的なプロパティを作成し、一時的なチェック ボックスをオンにして一時的なものにします... とても簡単に聞こえます。
の計算のコードwillDisplayCell
(いくつかの理由から wDC で実行する必要があります) では、エンティティは次のように保存できます。
MyEntity *myEntity = [self.fetchedResultsController objectAtIndexPath:indexPath];
myEntity.sectionTransientProperty = 2;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error: %@", error);
FATAL_CORE_DATA_ERROR(error);
return;
}
できましたよね?それが一時的なプロパティに値を割り当てる方法ですか?
次に、割り当て時に NSFRC の並べ替えオプションを変更します。
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"sectionTransientProperty"
cacheName:@"MyEntity"];
他に何をする必要がありますか?それとも、私はこれをひどく間違っていたので、あきらめるべきCore Data and NSFRC?
です。もし皆さんが私をガイドしてくれたら、本当に感謝しています. さらにコードを投稿する必要がある場合は、喜んで投稿します。
よろしく、
マイク