アプリケーションにsqliteファイルを追加し、バンドルからドキュメントディレクトリにコピーしようとしています。私はsqliteをターゲットアプリケーションに追加しました。バンドルからドキュメントディレクトリにコピーしようとしてエラーが発生しました
NSString *destination = [[[Utils applicationDocumentsDirectory] absoluteString] stringByAppendingString:@"myapp.sqlite"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:destination]) {
NSString *source = [[NSBundle mainBundle] pathForResource:@"myapp" ofType:@"sqlite"];
NSError *error = nil;
[fileManager copyItemAtPath:source toPath:destination error:&error];
if (error) {
//
}
}
コード[Utils applicationDocumentsDirectory]
のため:私は、ファイルをコピーするために使用するコードを次に示し
エラードメイン:
+ (NSURL *)applicationDocumentsDirectory { return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; }
しかし、このコードが実行されるが、私は次の
error
を取得します= NSCocoaErrorDomain Code = 4 "ファイル" myapp.sqlite " は存在しません。 UserInfo = {NSSourceFilePathErrorKey =/Users/harikrishnant /ライブラリ/開発者/ CoreSimulator/Devices/8E531314-F1AE-417F-8E99-7AA92967CDC9/data /コンテナ/バンドル/アプリケーション/ 0A710929-475D-457C-8D2D-C2F2BBEB6B92/myapp.app /Myapp.sqlite、 NSUserStringVariant =( コピー)、NSDestinationFilePath = file:///ユーザー/ harikrishnant /ライブラリ/ Developer/CoreSimulator/Devices/8E531314-F1AE-417F-8E99-7AA92967CDC9/data/Containers/Data/Application/13B22E15-D00C-433C-9F02-014B1F73D183/Documents/myapp.sqlite、 NSFilePath =/Users/harikrishnant /ライブラリ/開発者/ CoreSimulator/Devices/8E531314-F1AE-417F-8E99-7AA92967CDC9/data/Containers/Bundle/Application/0A710929-475D-457C-8D2D-C2F2BBEB6B92/myapp.app/myapp.sqlite、 NSUnderlyingError = 0x7faffe1b5cf0 {エラードメイン= NSPOSIXErrorDomain コード= 2 "No such file or directory"}}
私は、端末を使用して次のパスをチェックし、sqliteのファイルが実際にアプリケーションバンドルに存在することを考え出し:
/ユーザ/ harikrishnant /ライブラリ/開発/ CoreSimulator /デバイス/ 8E531314-F1AE- 417F-8E99-7AA92967CDC9 /データ/コンテナ/バンドル/アプリケーション/ 0A710929-475D-457C-8D2D-C2F2BBEB6B92/myapp.app/myapp.sqlite
しかし、それでもまだ、私はこのエラーを取得しています。私はすべてを試みた。私もビルドフォルダをきれいにして、アプリケーションを再インストールしても、それはまだ動作しませんでした。何が問題なの?どのようにそれを解決するには?
あなたの質問に 'UtilsのapplicationDocumentsDirectory'のためのコードを更新します。 – rmaddy
@rmaddyコードを追加しました。 –
ドキュメントのURLを取得するコードが正しいです。しかし、 'NSURL'をパス文字列に変換するには' path'と 'absoluteString'を呼ぶことをお勧めします。 – rmaddy