2017-05-01 5 views
0

私は質問があります。ローカルファイルに画像をダウンロードすると、progressViewを表示します。
Imageをダウンロードして参考にする関数を書いています。
しかし、URLSessionDownloadTakの使用方法や他のダウンロードの進行状況を自分の関数で知る方法はわかりません。
イメージをダウンロードするにはどうすればいいですか?

は、これは私のダウンロード機能コードです:

func ImageFromUrl(imageView:UIImageView,url:String,chatroomId:String) { 

let documentsDirectoryURL = try! FileManager().url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("\(Image)/") 
// create a name for your image 
let fileName = url + ".jpg" 
let fileURL = documentsDirectoryURL.appendingPathComponent(fileName) 

let urlString = URL(string: url) 

if let image = UIImage(contentsOfFile: fileURL.path) 
{ 
    imageView.image = image 
    return 
} 

DispatchQueue.global().async { 
    let data = try? Data(contentsOf: urlString!) //make sure your image in this url does exist, otherwise unwrap in a if let check/try-catch 

    if data != nil 
    { 
     if let image = UIImage(data: data!) 
     { 
      if !FileManager.default.fileExists(atPath: fileURL.path) { 
       if let jpegData = UIImageJPEGRepresentation(image, 0.001) 
       { 
        do { 
         try jpegData.write(to: fileURL, options: .atomic) 
        } catch { 
         debug(object: error) 
        } 
       } 
      } else { 
       debug(object:"file already exists") 
      } 

      DispatchQueue.main.async { 
       imageView.image = image//UIImage(data: data!) 
      } 
     } 
    } 
} 
} 
+0

それはだhttp://stackoverflow.com/a/38063937/4420355を見て迅速2、しかし原則は同じです – kuzdu

答えて

1

あなたの代わりにNSURLSessionのシンプルなソリューションをしたい場合は、私はAlamofireをお勧めします。この種のタスクを実行する簡単な方法があります。あなたはこれらの助けを借りて、あなたのURLを呼び出しNSURLSessionDelegateとNSURLSessionDownloadDelegate:あなたは、次のデリゲートを使用する必要が私の知る限り詳細については

https://github.com/Alamofire/Alamofire

Alamofire.download(urlString) 
    .downloadProgress { progress in 
     print("Download Progress: \(progress.fractionCompleted)") 
    } 

    .responseData { response in 
     if let data = response.result.value { 
      let image = UIImage(data: data) 
     } 
    } 
関連する問題