2016-10-25 29 views
0

我有代碼,其中我每增加一個常數到我的數組,我怎樣才能更新我的進度條每秒更改數組時更改?如何一步一步更新我的進度條?

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

我需要展現給用戶如何基將提取 – Skie

回答

0

與DispatchQueue.global完成(優先級:.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

可以幫助我得出兩個整數值,如示例第一個var數組:[Int] = [1500] &var total = 500,所以我想要讓value = array/total使用您的方法在swift 3.0中輸出的類型 –

1

使用計時器。假設你的進度視圖是0至1,並通過0.1每個第二遞增...

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

謝謝,但我需要同步工作與數組解析 – Skie

+0

我不知道你想要完成,但如果你已經添加對象到數組每秒鐘,我相信你可以在同一個計時器如果您知道要添加多少個對象,則可以將「更改」常量修改爲1 /期望元素的總數。 – Frankie

+0

我需要插入16000+箭頭的JSON基礎到CoreData基礎 – Skie