0

Core Dataを使用するアプリを作成しています。アプリの目的のために、事前に設定されたデータベースをアプリ バンドルにバンドルする必要があります。

私は使用していますUIManagedDocument

このために、アプリでデータベースを作成し、後でデータをロードしました。persistentStore次に、Mac で iOS Simulator フォルダーを検索し、ファイルをアプリ バンドルにドラッグ アンド ドロップしました。

NSDocumentDirectoryユーザーは実行時にデータベースを編集できるため、コードの後半でそれをにコピーしました。これは次の方法で行いました。

if(![[NSFileManager defaultManager] fileExistsAtPath:[self.appDatabase.fileURL path]])
{        
    // COPY FROM BUNDLE

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *DB = [[paths lastObject] stringByAppendingPathComponent:@"Default App Database"];
    DB = [DB stringByAppendingPathComponent:@"StoreContent"];

    [fileManager createDirectoryAtPath:DB withIntermediateDirectories:YES attributes:nil error:&error];

    NSLog(@"create directory error: %@",error);

    DB = [DB stringByAppendingPathComponent:@"persistentStore"];

    NSString *shippedDB = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"persistentStore"];
    NSLog(@"%d",[fileManager fileExistsAtPath:shippedDB]);
    [fileManager copyItemAtPath:shippedDB toPath:DB error:&error];

    NSLog(@"Copy error %@",error);
}

すべてが完璧に機能しています!しかし、これが何らかのエラーを生成するかどうかはわかりません。私の質問は、NSFileManager を使用して UIManagedDocument から作成された Core Data データベースを処理してもよろしいですか?

また、 Apple はファイルをバンドルするためのレビュー プロセスで不平を言うのでしょうか?persistentStore

4

1 に答える 1

1

デフォルトの永続ストアをアプリにバンドルすることは、「コア データ プログラミング ガイド」に明示的に記載されています。

デフォルトのデータでストアを初期化するにはどうすればよいですか?

...

デフォルト データを含む別の永続ストアを作成し、そのストアをアプリケーション リソースとして含めることができます。これを使用する場合は、ストア全体を適切な場所にコピーするか、オブジェクトをデフォルト ストアから既存のストアにコピーする必要があります。

于 2012-09-03T16:19:21.977 に答える