を使用してNSFetchedResultsController、Core Data 構造から数千の結果を引き出し、それらを に表示していUITableViewます。キーワードによる検索、作成者による並べ替えなど、述語を使用してフェッチを実行し、更新されたデータを表示するオプションがいくつかあります。
表示する前に順番をランダムにシャッフルしたいと思います。NSArray完全に機能するメソッドでのカテゴリを作成しましたが、shuffleそのメソッドを呼び出し[self.fetchedResultsController fetchedObjects]ても効果はなく、データは変更されません。これは is が原因fetchedObjectsでありreadonly、コピーを作成する必要があると想定しています。
私はそのコピーを作成しましたが、ヒットした問題は、その新しいアレイをアレイと平和的に共存させることfetchedObjectsです。fetchedObjectsさまざまな詳細ビューに移動してコンテンツを変更できるので、コンテンツの順序が異なっていても、shuffledFetchedObjectsアレイと同期を維持する方法を確認しようとしています。
ここに私の単純な小さなshuffleカテゴリがあります:
- (NSArray *) shuffle {
NSMutableArray *tmp = [NSMutableArray arrayWithArray: self];
for (int i = [tmp count] - 1; i > 0; i--) [tmp exchangeObjectAtIndex: arc4random() % (i + 1) withObjectAtIndex: i];
return [NSArray arrayWithArray: tmp];
}
これを達成するためにどのようなオプションがありますか?