小さな sqlite3 DB でアプリを初期化したいと考えています。Documents ディレクトリに配置しようとしましたが、サイズがゼロでコピーされることもあれば、まったくコピーされないこともあります。
情報がいっぱいの DB でアプリを初期化するにはどうすればよいですか?
ありがとうございました
アプリケーションでどのようにコピーしますか?
アプリケーションを app bundle 内の DB と共に (リソースとして) 出荷する場合、それが存在しない場合はリソースからドキュメント フォルダーにコピーし、そこで作業する必要があります。
NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease];
BOOL exists = [fileManager fileExistsAtPath:databasePath];
if (exists) {
return;
}
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
ありがとうウラジミール、
これは役に立ちました。いくつかの変更を加えましたが、これがうまく機能する最終結果です。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = @"personalLMS.s3db";
NSFileManager *fileManager = [[NSFileManager defaultManager] autorelease];
NSString * databasePathFromApp = [[NSBundle mainBundle] pathForResource:@"personalLMS" ofType:@"s3db"];
[fileManager copyItemAtPath:databasePathFromApp toPath:[documentsDirectory stringByAppendingPathComponent:databasePath] error:nil];