Как сделать последовательные звонки, чтобы вытащить разбитые на страницы данные в Swift

После нажатия кнопки мне нужно вытащить данные, разбитые на страницы (вытащить контакты из Pinterest IOS SDK, количество контактов ограничено 25 для вызова), т.е. мне нужно, чтобы мой код повторялся до responseObject больше никогда .hasnext, Какой лучший способ подойти к этому? Я могу нажимать кнопку снова и снова, чтобы потянуть все это вниз, но я хочу автоматизировать ее, поэтому требуется только одно нажатие кнопки.

@IBAction func didPressGetPinsButton(sender: UIButton) {



            if self.fetchingMore == false && self.currentResponseObject.hasNext() {


                    self.fetchingMore = true

                    self.currentResponseObject.loadNextWithSuccess({ (nextResponseObject :PDKResponseObject!) -> Void in

                        self.fetchingMore = false
                        self.currentResponseObject = nextResponseObject



                        guard let unwrappedArrayOfPins = nextResponseObject.pins() as? [PDKPin] else {return}

                          for pin in unwrappedArrayOfPins {
                              pins.append(pin) 
                          }

1 ответ

Решение

Поместите код действия в отдельную функцию, чтобы вы вызывали его в первый раз после нажатия кнопки, а затем продолжали повторно вызывать его, пока.hasNext

@IBAction func didPressGetPinsButton(sender: UIButton) {
    actionGetPins()
}

func actionGetPins() {
    // all your code

    if nextResponseObject.hasNext() {
        actionGetPins()
    }
}

В зависимости от того, сколько времени потребуется, чтобы получить все данные, вы также можете запустить всю функцию в фоновом режиме, но вы должны хотя бы добавить индикатор занятости, чтобы показать, что работа еще не завершена.

Другие вопросы по тегам