これは何らかのテストが必要なものです。ポイントを含むパスを直接見つけることは、おそらくより速い方法ですが、特定のパスに対応するすべてのポイントをフェッチすることができますが、文字列に書き込む部分は少し外れているようです。これらの文字列を解析するのが遅くなります。 (JSONは文字列です)。
ポイントをパスに保存するには、ポイントエンティティを追加することをお勧めします。ポイントエンティティは、パスを参照してリンクされます。代わりに、変換可能なデータを使用することもできます。あなたのポイントは、2つまたは3つのdouble値で表され、バッファに直接入れることができます(例えば、NSData
)。保存されるデータの長さは、点の数をdata.length/(sizeof(double)*dimensions)
と定義します。これはObjectiveCで非常に簡単に行えますが、Swiftでは生データや安全でないポインタを扱う際に頭が紛れることがあります。
これは実際に実装しているものによって異なりますが、データベースに非常に多くのパスを配置する予定がある場合でも、データを取得する際に大きな遅延が予想されます。あなたはセクターの作成を検討したいかもしれません。各セクターは、データベース()と同じデータで表されます。データベースの初期化では、地球全体のセクターを作成するために繰り返します。次に、パスを挿入するときに、パスが交差する領域を確認し、それらの領域にパスを割り当てます(多対多の関係)。ここで地図を表示すると、どの領域が表示されているかを確認し、それらの領域のみを取り出してからそれらの領域を抽出します。