2017-08-24 21 views
-1

私はViewControllerに細胞を持っています。ユーザがセルの1つをクリックすると、彼は次にid(tableNumber)を持つTableControllerに入ります。 TableControllerユーザーはファイルをダウンロードすることができます。フォルダにファイルを保存する

問題:最初のtableView(id1)のファイルをViewControllerで返し、ダウンロードした後に2番目のtableView(id2)ファイルを次のように1つのフォルダに保存すると、/Documents/id2。しかし、私はこの場合、次のようなファイルを保存する必要があります:最初のファイル/Documents/id1 2番目のファイル/Documents/id2。どうやってするの? DownloadManagerにIDを渡すTableController

コード:、すべてのダウンロードについて

var id = "" 

func urlSession(_ session: URLSession, 
        downloadTask: URLSessionDownloadTask, 
        didFinishDownloadingTo location: URL){ 

     let fileName = downloadTask.originalRequest?.url?.lastPathComponent 
     let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true) 
     let documentDirectoryPath:String = path[0] 
     let fileManager = FileManager() 
     var destinationURLForFile = URL(fileURLWithPath: documentDirectoryPath.appending("/\(id)")) 
     do { 
      try fileManager.createDirectory(at: destinationURLForFile, withIntermediateDirectories: true, attributes: nil) 
      destinationURLForFile.appendPathComponent(String(describing: fileName!)) 
      try fileManager.moveItem(at: location, to: destinationURLForFile) 
     }catch(let error){ 
      print(error) 
     } 

    } 
+0

@mattを希望DownloadManager.shared.

使用DownloadManager()

を使用しないでください。私のファイルは1つのフォルダに保存されます。しかし、ユーザーが複数のファイルをダウンロードするときは、2つのフォルダに保存する必要があります。 –

+0

@matt 1つのフォルダを別のフォルダに保存するのはなぜですか?私は5つのテーブルのIDがありますか?私はテーブルから5つの異なるフォルダ(ID)にファイルを保存する必要があります。 5つの異なるテーブルから5つの異なるファイルをダウンロードすると、ファイルは1つのフォルダ(最後のID)にのみ保存されます。しかし、私は5つの異なるフォルダに保存することにしました。 –

答えて

0

DownloadManagerのインスタンスを作成し、動画をダウンロードします。ファイルを保存するDownloadManager

DownloadManager.shared.id = self.id 

コード。

DownloadManagerでフォルダパス、行/テーブルIDを保存する変数を作成できます。

ダウンロードごとにDownloadManagerの新しいインスタンスを作成するため、ビューコントローラと行/テーブルIDごとに異なるフォルダパスを定義できます。

ファイルをダウンロードした後、上記の変数を使用してファイルをフォルダに保存します。

は、このことができます:)私は質問でこれを書いた

+0

テーブル変数をグローバル変数に渡そうとしましたが、これも機能しません。そして、私がこの 'var downloadManager = DownloadManager()'を使用した場合、 '' DownloadManager 'イニシャライザは'プライベート 'の保護レベルのためにアクセス不能になります –

+0

あなたのDownloadManager init()メソッドはプライベートキーワードを持っています。 「プライベート」キーワードを削除してください。 – Basheer

+0

私は 'let downloadManager = DownloadManager() downloadManager.id = self.id'とDownloadManager:' var id = "" 'を使用しますが、フォルダは作成されません。 –

関連する問題