Свифт обновления цикла - PullRequest
       1

Свифт обновления цикла

0 голосов
/ 21 октября 2019

У меня возникли проблемы с поиском способа что-то обновить. У меня есть эта функция:

func pingHost(_ fullURL: String) -> Bool {
        let url = URL(string: fullURL)
        let task = URLSession.shared.dataTask(with: url!) { _, response, _ in
            if let httpResponse = response as? HTTPURLResponse {
                if httpResponse.statusCode == 200 {
                    self.status = true
                } else if httpResponse.statusCode != 200 {
                    self.status = false
                }
            }
        }
        task.resume()
        return self.status
    }

Я хочу, чтобы эта функция повторялась каждую секунду. Я уже пробовал цикл while в функции viewDidLoad. Но если я хочу добавить пользовательский интерфейс, он не может загрузиться из-за while (цикл while никогда не заканчивается, поэтому viewDidLoad никогда не будет выполняться должным образом).

ViewDidLoad:

override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.purple

        statusLabel.translatesAutoresizingMaskIntoConstraints = false

        self.view.addSubview(statusLabel)
        statusLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        statusLabel.topAnchor.constraint(equalTo: view.topAnchor, constant: 125).isActive = true
        statusLabel.text = "Status Label"
        statusLabel.textAlignment = .left
        statusLabel.textColor = UIColor.white
        // Do any additional setup after loading the view.
        while true {
            if (self.pingHost("http://example.com") as Bool) != false {
                print("URL is online")
            } else if (self.pingHost("http://example.com") as Bool) != true {
                print("URL doesn't give a response back")
            }
        }
    }

Надеюсь, кто-нибудь сможет мне помочь с этой проблемой. Заранее спасибо!

1 Ответ

3 голосов
/ 21 октября 2019

Вы можете установить таймер в viewDidLoad: сначала объявите его как переменную:

var timer: Timer?

Затем в viewDidLoad:

timer = Timer.scheduledTimer(withTimeInterval: 1.0,
                             repeats: true,
                             block: { [weak self] _ in
                                  self?.pingHost("http://example.com")
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...