2

小さな sqlite3 DB でアプリを初期化したいと考えています。Documents ディレクトリに配置しようとしましたが、サイズがゼロでコピーされることもあれば、まったくコピーされないこともあります。

情報がいっぱいの DB でアプリを初期化するにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

4

アプリケーションでどのようにコピーしますか?
アプリケーションを 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];
于 2010-01-26T11:18:24.837 に答える
1

ありがとうウラジミール、

これは役に立ちました。いくつかの変更を加えましたが、これがうまく機能する最終結果です。

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];
于 2010-01-26T14:32:08.453 に答える