2017-01-16 3 views
0

Я пытаюсь показать прогресс в просмотре файла, который я загружаю, когда я печатал прогресс, который он прав, но когда я реализую его в представлении прогресса, это совершенно неправильно, он переходит на 3000 % здесь мой код. Я использую MHRadialProgressView, связывающий UIProgressView, чтобы показать процесс загрузки с использованием Firebase

downloadTask.observe(.progress) { (snapshot) -> Void in 
    // Download reported progress 

    let percentComplete = 100 * Double(snapshot.progress!.completedUnitCount)/Double(snapshot.progress!.totalUnitCount) 
    print("percentComplete") 
    self.progressView.moveNext(currentprogress as NSNumber!) 

    // Update the progress indicator 
} 

, когда я использовал MBProgressHUD здесь код для его

downloadTask.observe(.progress) { (snapshot) -> Void in 
       // Download reported progress  
       let percentComplete = 100 * Float(snapshot.progress!.completedUnitCount) 
        /Float(snapshot.progress!.totalUnitCount) 

      let hud = MBProgressHUD.showAdded(to: (self.navigationController?.view)!, animated: true) 
      // Set the determinate mode to show task progress. 
      hud.mode = MBProgressHUDMode.determinate 

      hud.label.text = NSLocalizedString("Loading...", comment: "HUD loading title") 
      // Set up NSProgress 
      let progressObject = Progress(totalUnitCount: 100) 
      hud.progressObject = progressObject 
      // Configure a cancel button. 


      DispatchQueue.global(qos: .default).async(execute: {() -> Void in 
       // Do something useful in the background and update the HUD periodically. 

       while progressObject.fractionCompleted < 1.0 { 

        progressObject.becomeCurrent(withPendingUnitCount: 1) 
        progressObject.resignCurrent() 
        usleep(useconds_t(percentComplete)) 
       } 

       DispatchQueue.main.async(execute: {() -> Void in 
        hud.hide(animated: true) 
       }) 
      }) 
     } 

я получаю эту ошибку nanfatal ошибка: значение Float не может быть преобразовано в UInt32, потому что это либо бесконечны, либо NaN

ответ

1

несколько рекомендаций:

  • не используйте эта библиотека (она не обновлялась с 2014 года), используйте MBProgressHUD, что позволяет вам set a progress object and forget about it.
  • Если вы все еще хотите использовать оригинальную библиотеку, обязательно прочитайте документацию - она ​​говорит "или неупорядоченные прогрессы [sic] (часто с помощью шагов, связанных с действием пользователя [sic]), вы можете увеличить прогресс на стоимость". Это означает, что вам нужно отличать предыдущий прогресс с текущим прогрессом и приростом или уменьшать его самостоятельно.
+0

, пожалуйста, проверьте код выше, когда я использовал MBProgressHUD. Я получаю эту ошибку. нафатальная ошибка: значение Float не может быть преобразовано в UInt32, поскольку оно либо бесконечно, либо NaN – Khallad

+1

Можете ли вы объяснить, почему вы просто не делаете: 'hud.progressObject = snapshot.progress'? Все остальное кажется запутанным и ненужным. –

Смежные вопросы