2016-10-29 11 views
0

iPhoneでmp3ファイルを迅速にダウンロードしようとしています。しかし、それらのファイルは時々破損しています。 (ダウンロードしたMp3の継続時間はこの問題のために変更されますので、MPmovieplayerで正しい継続時間を読み取ることができません)なぜか分かりません。あなたは私が問題を解決するのを助けることができますか?ダウンロードファイル、MP3ファイルは、SwiftのNSURLセッションで破損しています

func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) 
{ 
    self.totalByte = self.totalByte + Double(response.expectedContentLength) 
    self.delegate?.onDownLoadStart?(self.fileId,filePath:self.savePath, fileLength: self.totalByte,loadPath:self.filePath, info:self.info!) 

} 

func connection(connection: NSURLConnection, didReceiveData data: NSData) 
{ 
    if(self.isSaved){ 

     if(self.bigFile == nil){ 
      if(self.file != nil){ 
       self.file!.appendData(data) 
      } 

      self.bigFile = NSFileHandle(forUpdatingAtPath: self.savePath) 
      self.file = nil 
     }else{ 
      self.bigFile!.seekToEndOfFile() 
      self.bigFile!.writeData(data) 

     } 
     self.progressByte = progressByte + Double(data.length) 

    }else{ 
     if(self.file == nil){ 
      self.file = NSMutableData() 
     } 
     self.file!.appendData(data) 
     progressByte = Double(file!.length) 
    } 

    self.delegate?.onDownLoadProgress?(self.fileId, progressPct:Float(self.progressByte/self.totalByte)) 


} 


func connectionDidFinishLoading(connection: NSURLConnection){ 
    self.delegate?.onDownLoadComplete(self.fileId, filePath:self.savePath, fileData:self.file,loadPath:self.filePath, info: self.info!) 
self.removeFileHandle() 
} 


private func removeFileHandle() 
{ 
    bigFile?.closeFile() 
    bigFile=nil; 
    file=nil; 
} 


func connection(connection: NSURLConnection, didFailWithError error: NSError){ 

    print("DownLoader path="+self.filePath+" errorCode="+error.code.description); 
    self.removeFileHandle() 

    self.delegate?.onDownLoadError?(self.fileId,filePath:self.savePath, withError:error) 


} 

答えて

関連する問題