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