2016-10-25 6 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

Я не уверен, что вы пытаетесь выполнить, но если вы уже добавляете объекты в массив каждую секунду, я уверен, что вы сможете это сделать в рамках такой же таймер. Если вы знаете, сколько объектов вы добавляете, вы можете изменить константу «change» на 1/общее количество ожидаемых элементов. – Frankie

+0

Мне нужно вставить базу JSON из 16000+ стрелок в базу CoreData – Skie