私の最初の質問は、オブジェクトグラフとデータモデルを小さな別のアプリ(たとえば、ObjectMakerと呼ばれる)で作成し、そこに保存して、.sqliteまたはデータを実際のアプリにエクスポートする形式でインポートできますか?作ってるの?そこから、すべてのフェッチリクエストを実行し、データをさらに編集して保存します。
もちろん。ObjectMakerアプリでSQLストアを作成できます。完了したら、そのストアを取得して、アプリのメインバンドルにコピーできます(自分で行う必要があります)。
起動時に、アプリはストアを次のようにメインフォルダーにコピーします。永続ストアは、そのフォルダーストアを指している必要があります。
NSString *storePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @"yourStore.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:storePath]) {
NSString *defaultStorePath = [[NSBundle mainBundle]
pathForResource:@"yourStore" ofType:@"sqlite"];
if (defaultStorePath) {
[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
}
}
私の2番目の質問は、ユーザーが最初にアプリを開いたときに取得するオブジェクトグラフの「最初の起動状態」を提供することは可能ですか(5,000個のオブジェクトが作成され、アクセス/クエリの準備ができているなど)。アプリに.sqliteまたはObjectMakerアプリでデータをエクスポートする形式を同梱し、.plistが存在することを知らずにそれを排他的に使用することを希望します。
この質問について、私はあなたの目標を理解していませんが、私はいくつかのヒントを提供しようとします。まず、ユーザーが一度に5,000個のオブジェクトを使用するかどうかはよくわかりません。したがって、アドホッククエリ(NSFetchRequest
)を実行するそれらの束を表示して、要求された場合にのみそれらを表示できます。さらに、テーブルを介してオブジェクトを表示する必要がある場合は、で遊ぶことをお勧めしNSFetchedResultsController
ます。このクラスはこのためにあります。これにより、データをより詳細に制御し、CoreDataにメモリ管理を任せることができます。たとえば、取得するオブジェクトの数を指定できます(たとえば10)。テーブルをスクロールすると、他の10個のオブジェクトがフェッチされます。
お役に立てば幸いです。他に何か必要な場合は、私に知らせてください。