iOS Core Dataデータベースに、ある場所で何かを説明する一連のエンティティオブジェクトがあります。エンティティをLocationと呼びましょう。場所を参照する場所に2つの属性(緯度と経度)を設定することでこれを実装しました。どちらも2倍です。名前のような他の要素があります。
NSFetchedResultsControllerを使用して、エンティティをUITableViewControllerにバインドしています。私がやりたいのは、特定のCLLocationCoordinate2Dまでの距離で結果を並べ替えることです。本当に理想的なシナリオでは、そのリストを更新して、新しい場所に基づいて並べ替えを再計算することができます。したがって、この並べ替えは2つのキーと、3番目の「静的」変数(コレクション内のアイテム間で変化しない変数)に依存します。
NSSortDescriptorsを使用して任意のリストを並べ替えていれば、これを行う方法を理解できたと思います。ただし、NSFetchedResultsControllerでソート記述子がどのように使用されるかは制御しません。
これを実現するために、エンティティ、NSFetchedResultsController、NSSortDescriptorsなどを構成する方法はありますか?その答えは、派手なNSSortDescriptorを作成することではなく、私までの距離を表すエンティティに一時的な属性を作成し、その属性を定期的に再計算することにあると思います。ただし、Core Dataは初めてなので、これを行うのに最適な方法がわかりません(すべてのエンティティを繰り返し処理し、フィールドを再計算します)。NSSortDescriptorsが一時的な属性で機能するかどうかもわかりません。