2016-11-29 12 views
0

xlsxファイルをドキュメントフォルダからアプリケーションフォルダに保存しようとしています。ここでは、コードですが、それはエラーを示す:ドキュメントフォルダからnsbundleアプリフォルダへのコピー中にファイルが存在しません

Error Domain=NSCocoaErrorDomain Code=260 "The file “file1.xlsx” couldn’t be opened because there is no such file." UserInfo={NSFilePath=file:///private/var/mobile/Containers/Data/Application/8AC91C23-3662-44FF-90EF-20F6A34AF61F/Documents/file1.xlsx, NSUnderlyingError=0x16169a60 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

let directoryContents = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsUrl, includingPropertiesForKeys: nil, options: []) 
let xlsxFiles = directoryContents.filter{ $0.pathExtension == "xlsx" } 
let xlsxFileNames = mp3Files.flatMap({$0.URLByDeletingPathExtension?.lastPathComponent}) 

var fileManager = NSFileManager.defaultManager() 

do { 
    try fileManager.copyItemAtPath(xlsxFiles[0].absoluteString, toPath: NSBundle.mainBundle().resourcePath! + xlsxFileNames[0] + ".xlsx") 
} 
catch let error 
{ 
    print(error) 
} 
+2

デバイスでは、アプリケーションバンドルは読み取り専用です。なぜファイルがバンドル内にあるべきだと思いますか? –

+0

シミュレータ上で実行し、ファイルが存在するかどうかを手動でチェックします。 –

+0

@PhillipMills彼はそのファイルをバンドルファイル作成プロジェクトに入れておく必要があります。 –

答えて

2

次の2つの問題を抱えています。最初の問題はあなたの質問に投稿したエラーの原因です。

  1. copyItemAtPathの両方のパラメータは、完全なファイルパスである必要があります。最初の引数は単なるファイル名です。ファイル名をその場所のフルパスに追加する必要があります(2番目の引数の場合と同様)。
  2. アプリのバンドルは読み取り専用です。ファイルをアプリのバンドルにコピーすることはできません。したがって、最初の問題を修正しても、新しい問題が発生します。ファイルが既にあなたのアプリのDocumentsフォルダ内にある場合、それをバンドルにコピーしようとするのはなぜですか?
+0

経口mp3Files [0] 'ファイル.absoluteString:///民間の/ var /モバイル/コンテナ/データ/アプリケーション/ 3CB10230-8A89-4F9C-A99E-F55630435424 /ドキュメント/ Contacttoexcelpro.xlsx' これはどのように第三です文字列= NSBundle.mainBundleは()pathForResource( "testWorkbook"、ofType: "XLSX")。 VARのスプレッドシート:BRAOfficeDocumentPackage = BRAOfficeDocumentPackage.open(documentPath) ' は私が開きたいパーティのライブラリは が 'のvar documentPathのxlsxファイルを読みますファイル:///private/var/mobile/Containers/Data/Application/3CB10230-8A89-4F9C-A99E-F55630435424/Documents/Contacttoexcelpro.xlsx " ファイル:それが機能していない –

+1

あなたの質問を編集してその情報を含めてください。私たちが読むことができるようにコードをコードとしてフォーマットしてください。 –

関連する問題