если не работает в Swift @IBaction UserDefault для проверки входа - PullRequest
0 голосов
/ 06 апреля 2020

Я был сбит с толку.

это потому, что мой поток управления работает не так, как должно быть.

Я думаю, это просто основы c logi c. Но, как ни странно, мой поток управления не такой, каким я хочу быть.

Это мой код.

enter image description here

, что , isLogin () метод, иметь этот код:

enter image description here

странно, почему поток управления всегда go для оператора if, даже пользователь не еще не войти в систему.

Примечание: если пользователь еще не вошел в систему, должен присутствовать текущий вид LoginViewController.

Кто-нибудь может объяснить эту проблему? Спасибо

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

UserDefaults возвращает nil, если нет значения для «токена», поэтому проверьте, что значение не равно nil

func isLogin()->Bool{
    let defaults = UserDefaults.standard

    guard let token = defaults.string(forKey: "token") else{
        return false
    }
    return true
}
0 голосов
/ 06 апреля 2020

string (forKey: "token") является необязательным, потому что может возвращать и nil, когда не имеет значения, метод ' isEmpty ' проверяет, является ли строка пустой или нет!

func isLogin() -> Bool {
    let token = UserDefaults.standard.string(forKey: "token")
    return token != nil && !token!.isEmpty
}
0 голосов
/ 06 апреля 2020

Userdfaults возвращает ноль, если оно не имеет значения.

Добавить ноль вместо пустых кавычек: -

    if UserDefaults.standard.string(forKey: "token") != nil {
        return true
    } else {
        return false
    }
...