Documentsディレクトリにコピーした後、元のファイルが137KBで、サイズが0 KBになった.dbファイルに問題があります。 SQLite Managerでコピーしたファイルを開こうとしました。それは開く、ファイルの破損について苦情しない...それはただ1つのテーブルが含まれていません。sqliteファイルをDocumentsフォルダにコピーした後、ファイルが空になった
私のコードは、ファイルをコピーします
- (void) createEditableDatabase
{
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSString *writableDB = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"yc_ch.db"];
success = [fileManager fileExistsAtPath:writableDB];
if (success)
{
return;
}
NSString *defaultPath = [[NSBundle mainBundle] pathForResource:@"yc_ch" ofType:@"db"];
error = nil;
success = [fileManager copyItemAtPath:defaultPath toPath:writableDB error:&error];
if (!success)
{
NSAssert1(0, @"Failed to create writable database file:%@", [error localizedDescription]);
}
}
かをチェックし、ファイルが存在する場合、コピーされていない場合。チェックはRootViewControllerで行われます
- (void)viewDidLoad
{
self.subCountriesArr=[[NSMutableArray alloc]initWithCapacity:1];
NSMutableArray *subCountriesTemp=[[[NSMutableArray alloc]init]autorelease];
DBAccess *dbAccess=[[DBAccess alloc]init];
[dbAccess createEditableDatabase]; //method to copy file
subCountriesTemp=[dbAccess getSubCountries];
[dbAccess closeDataBase];
[dbAccess release];
}
それは私には奇妙です。助けてください?前もって感謝します。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDB = [documentsDirectory stringByAppendingPathComponent:@"yc_ch.db"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:writableDB]) {
NSString *databaseFile = [[NSBundle mainBundle] pathForResource:@"yc_ch" ofType:@"db"];
[fileManager copyItemAtPath:databaseFile toPath:writableDB error:nil];
NSLog(@"database copied");
}
私はNSHomeDirectoryは、ドキュメントディレクトリにアクセスするための有効な方法だとは思わない....
が、この場合は確かに知ってはいけない:あなたはこれでそれを試すについてどのように
いいえ、役に立たないです。私はまだ空のdbを得ています – NCFUSN
あなたはそれがクリーンなコピーだと確信していますか?私のアプリは何とかデータベースをキャッシュしていました。たとえ私がアプリをきれいにしたとしても、私は手動でアプリディレクトリを削除して、再度インストールする必要がありました... – Ron
私はそれを行いました。私はiphoneシミュレータで削除しようとしましたが、それらは手動で別の試行の後に削除されました。何も役に立たない。新しい新鮮なコンパイルのたびに、さらに0KBのデータベースが生まれます。 – NCFUSN