2016-10-25 2 views
0

Ich habe Code, wo ich jede Sekunde eine Konstante zu meinem Array hinzufügen, wie kann ich meine Fortschrittsbalken jede Sekunde aktualisieren, wenn Array geändert wird?Wie kann ich meinen Fortschrittsbalken Schritt für Schritt aktualisieren?

var array: [Int] = [] 

override func viewWillAppear(_ animated: Bool) { 
     upgradeArray() 
    } 

    func upgradeArray() { 
     for i in 0...10 { 
      sleep(1) 
      array.append(i) 
      print(i) 
      let percentProgress = Float(Float(self.array.count)*100.0/10.0) 
      progressBar.setProgress(percentProgress, animated: true) 
     } 

    } 
+0

i Benutzer zeigen müssen, wie Basis werde extrahieren – Skie

Antwort

0

mit DispatchQueue.global getan (Priorität: .default) .async

func upgradeArray() { 
     for i in 0...10 { 
      DispatchQueue.global(priority: .default).async { 
       //sleep(1) 
       self.array.append(i) 
       print(i) 
       DispatchQueue.main.async(execute: { 
        let percentProgress = Float(Float(self.array.count)*100.0/10.0) 
        self.progressBar.setProgress(percentProgress, animated: true) 
       }) 
      } 
     } 

    } 
+0

kann mir helfen zwei Integer-Wert wie Beispiel erste var-Array: [Int] = [1500] & var total = 500, also ich will let value = array/total Art der Ausgabe in Swift 3.0 mit Ihrer Methode –

1

Verwenden Sie einen Timer. Ihre Fortschritte Ansicht Unter der Annahme, 0 bis 1 ist und von 0,1 pro Sekunde erhöht wird ...

var timer: Timer? 
var array = [String]() 

func doStuff() { 

    timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { timer in 

     self.array.append("foo") 

     let change: Float = 0.1 
     self.progressView.progress = self.progressView.progress + (change) 

     if self.progressView.progress >= 1.0 { 
      self.timer?.invalidate() 
     } 
    }) 
} 
+0

danke, aber ich brauche sync Arbeit mit Array Parsing – Skie

+0

Ich bin mir nicht sicher, was Sie versuchen zu erreichen, aber wenn Sie bereits Objekte zu einem Array jede Sekunde hinzufügen, bin ich sicher, dass Sie das innerhalb der arbeiten können gleicher Timer. Wenn Sie wissen, wie viele Objekte Sie hinzufügen, können Sie die 'change'-Konstante auf 1/Gesamtzahl der erwarteten Elemente ändern. – Frankie

+0

Ich muss JSON Basis von 16000 + Pfeile CoreData Base einfügen – Skie

Verwandte Themen