2017-02-10 4 views
1

にアプリケーションバンドルにアクセスする権限がありませんので、私はドキュメントディレクトリからアプリケーションバンドルディレクトリにファイルをコピーしていた場合、それはこのようなエラーを与えてコピーすることができませんでした。あなたは、IOS

「イメージ」ことができませんでした「リソース」にアクセスする権限がないためコピーされます。

私のコード

let fileManager = FileManager.default 
let documentDirectoryPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Images") 
let bundleDirectoryPath = (Bundle.main.resourceURL?.appendingPathComponent("GCDWebUploader.bundle").appendingPathComponent("Contents").appendingPathComponent("Resources").appendingPathComponent("Images")) 

do { 
     try fileManager.copyItem(at: documentDirectoryPath!, to: bundleDirectoryPath!) 
    } catch let error as NSError { 
     print("Couldn't copy file to final location! Error:\(error.description)") 
    } 
+0

は、なぜあなたはあなたのバンドルディレクトリにイメージを移動したいんドキュメントディレクトリを使用したファイルの他のタイプ(読み取りまたは書き込み)の資産カタログ

を使うのか? –

+0

私はGCDWebUploader.Andを使ってシンプルなウェブサーバーを実装しました。それは正常に完了しました。しかし、私はiphoneからアップロードされた画像をweb.Atに表示したいと思います。しかし、私は許可の問題を得ています。 – Bhumi

+0

これは、GCDWebUploaderを使用して外部サーバーにアップロードするイメージをドキュメントディレクトリに持っているということですか?その場合、アップロードコードを表示し、サンドボックスから画像にアクセスする方法を教えてください。 –

答えて

0

コピーがDirctoryをバンドルするのはなぜバンドルdirがSSL certificateでコード署名され、あなたはそれを破ることができないので...バンドルディレクトリに書き込みをする方法はありません。ドキュメントディレクトリ自体を使用してファイルを格納することができます。

0

ディスク上のバンドルディレクトリ(Read here)はコードでは変更できません。つまり、開発者は内容を変更できません。アプリケーションのドキュメントディレクトリ(サンドボックス)は、物事を保存したい場所です。

0

ファイルをバンドルディレクトリに追加する場合は、ビルドフェーズタブのコピーリソースを使用してビルド時にファイルを追加する必要があります。これらは通常、実行ごとに変更すべきではないファイルです。

バンドルに追加しようとしている画像がUI用のものである場合。

関連する問題