アプリに配置され、ビルド フェーズ内event_setup.sqlite
のセクションにコピーされたファイルがあります。Copy Bundle Resources
このファイルをリソースからドキュメント ディレクトリにコピーしようとすると、アプリでファイルが見つからないと表示されます。次のコードを使用して、リソースからファイルをコピーし、ファイルが存在しないことを通知しています。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[self checkAndCreateDatabase: @"event_setup.sqlite"];
return YES;
}
-(void)checkAndCreateDatabase:(NSString *)name{
/*----Get the path to the Database----*/
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:name];
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:databasePath];
if(success){
NSLog(@"Database already exists");
return;
}
else{
NSLog(@"Database does not exist");
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:name];
bool test = [fileManager fileExistsAtPath:databasePathFromApp];
if(test){
NSLog(@"file does exist in resources: %@", databasePathFromApp);
}
else{
NSLog(@"file does not exist in resources: %@", databasePathFromApp);
}
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}
}
このコードを実行すると、ログに次のように表示されます。
file does not exist in resources: /Users/samrowley/Library/Application Support/iPhone Simulator/6.1/Applications/583D4293-3AD5-45FB-B502-9919F51FDB7B/Test.app/event_setup.sqlite
アプリのクリーニング、Xcode の再起動、ファイルの削除と Xcode への再コピーを試みましたが、何も機能しないようです。
編集:
端末コマンドからの出力:
-rw-r--r-- 1 samrowley staff 2797 11 Feb 10:51 divider.png
-rw-r--r-- 1 samrowley staff 2803 11 Feb 10:51 divider@2x.png
drwxr-xr-x 3 samrowley staff 102 11 Feb 10:51 en.lproj
-rw-r--r-- 1 samrowley staff 2937 11 Feb 10:51 header.png
-rw-r--r-- 1 samrowley staff 3205 11 Feb 10:51 header@2x.png