iOS - проверьте, действует ли таймер или нет - PullRequest
0 голосов
/ 09 января 2019

В моем приложении для iOS мне нужно выполнять действие, если в течение 2 секунд не приходит никакого результата.

Итак, я установил таймер в начале:

var timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(ViewController.noResults), userInfo: nil, repeats:false)

и всякий раз, когда я получаю результаты, я уничтожаю таймер и запускаю новый объект таймера. Я проверяю, действителен ли таймер, чтобы узнать, были ли достигнуты 2 секунды. Когда я не получаю результатов в течение 2 секунд, я делаю некоторые действия:

if result != nil {
    timer.invalidate()
    timer = Timer.scheduledTimer(timeInterval:2, target: self, selector: #selector(ViewController.noResults), userInfo: nil, repeats:false)
}

if timer.isValid {
    print("has not been 2 seconds yet")
} else {
    print("do some action")
}

Это не работает, и я никогда не получаю предложение do some action. Может ли кто-нибудь указать мне правильный путь?

1 Ответ

0 голосов
/ 09 января 2019

В вашем коде вместо использования timer.isValid, как насчет изменить на timer != nil, как показано ниже,

if result != nil {
    timer.invalidate()
//        timer = Timer.scheduledTimer(timeInterval:2, target: self, selector: #selector(ViewController.noResults), userInfo: nil, repeats:false)
}

if timer != nil { // here
    print("has not been 2 seconds yet")
} else {
    print("do some action")
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...