2017-12-18 4 views
0

を再構築するとき、私は、URLからのビデオファイルをダウンロードして、このパスをドキュメントディレクトリに保存します。ドキュメントディレクトリパスの変更をアプリケーション

let destination: DownloadRequest.DownloadFileDestination = { _, _ in 
     let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4" 
     let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
     let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true) 
     let fileURL: URL = folderPath.appendingPathComponent(pathComponent) 
     return (fileURL, [.removePreviousFile, .createIntermediateDirectories]) 
    } 

私のビデオがダウンロードされ、成功裏に果たしています。 Xcodeでアプリケーションを再構築してダウンロードした最後のビデオを再生しようとすると、ビデオが表示されず、新しいビデオをダウンロードして保存して正常に再生すると問題が発生します。

私は各ビデオバンドルパスを見ましたが、それらは異なっています。

1 - ファイル:///ユーザ/ myMac /ライブラリ/開発/ CoreSimulator /デバイス/ EAC2F4CE-EA09-46C0-B403-1CE9E24B6822 /データ/コンテナ/データ/アプリケーション/ 1D2C1F7B-E627-4898-91C1 -D0AF8D5E0F1E/Documents/Downloads/pack7-1.mp4

2ファイル:/// Users/myMac/Library/Developer/CoreSimulator/Devices/EAC2F4CE-EA09-46C0-B403-1CE9E24B6822/data/Containers/data /アプリケーション/ F950E9A5-C9F3-4B8C-BCF5-647EEC233CEE今 /Documents/Downloads/pack7-3.mp4

、私の質問は、私たちがのApp Storeからアプリを更新するとき、それは再インストールを意味し、ありますか?このパスは変更されますか?

どのようにこの問題を解決できますか?

+0

@ivarun:そうではありません! iOS 8以降アプリの起動時にアプリの絶対URLが変わるhttps://stackoverflow.com/questions/26988024/document-or-cache-path-changes-on-every-launch-in-ios-8 –

+0

@ ivarun私はXCODEからアプリをアンインストールせずに繰り返し実行するとデバイス内でテストします。 – ava

+0

@ava:投稿した回答を確認しましたか?それは助けてくれませんでしたか?それ以上の問題はありますか? –

答えて

4

iOS 8以降、アプリを再起動するたびに絶対URLからアプリのサンドボックスが変更されます。したがって、あなたは決してビデオの絶対URLを保存すべきではありません。ビデオの名前を保存し、アプリケーションを再起動するたびにURLを作り直してください。

let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4" 
    let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
    let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true) 
    let fileURL: URL = folderPath.appendingPathComponent(pathComponent) 

あなたはファイルのfileURL外観を持っていて、前回の打ち上げでダウンロードしたファイルを見つけるでしょうしたら。

iOSは、ユーザーがアプリを起動するたびに新しいサンドボックスを作成します。したがって、絶対URLは非常になります。しかし、以前のように、サンドボックス内のすべてのフォルダとコンテンツの設定は、iOSが担当します。したがって、SandBoxのベースURLは変更されますが、すべてのコンテンツの相対URLはそのまま残ります。

絶対的なURLを絶対に保存しないことをお勧めします:)それが役に立ったらいいですか?

+0

someOneはドキュメントディレクトリ内のこのフォルダにアクセスし、このフォルダの内容をコピーできますか? – ava

+0

@ava:もし誰かがiPhoneにアクセスできるなら、はい、あなたのiPhoneをMacに接続し、サードパーティ製のアプリケーションを使ってアプリケーションサンドボックスを開き、コンテンツをコピーすることができます。これらの種類のアクセスに対してファイルを保護したい場合は、複数の解決策があります –

+0

@ava:解決策1:ファイルを一時フォルダに保存します。一時フォルダに保存されたコンテンツはiCloudによってバックアップされておらず、アプリにアクセスすることもできません。しかし、キャッチは、一時フォルダ内のコンテンツは永続化されないということです。 appがkillされると、tempフォルダ内のすべてのコンテンツが失われます。お読みください:https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html –

関連する問題