Тип приведения значения из UserDefault throws error - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь извлечь данные из UserDefault, но когда я делаю это, я получаю ошибку

var sharedPreference: UserDefaults = UserDefaults.init(suiteName: "user-key-value")!
func getLastLoginClientId() -> Int64? {

        for (key, value) in sharedPreference.dictionaryRepresentation() {
            if key == LAST_USER {
                return value as! Int64
            }
        }
        return nil
}

Я получаю, что мой ключ имеет какое-то значение, но при его возврате выдаетошибка.

Так я сохраняю

func setLastLoginClientId(clientId: Int64) {
        sharedPreference.set(clientId, forKey: LAST_USER)
        sharedPreference.synchronize()
    }

1 Ответ

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

Я думаю, вы могли бы сделать что-то простое, как

func getLastLoginClientId() -> Int64? {
    return sharedPreference.value(forKey: LAST_USER) as? Int64
}

Вот что я проверял

struct CustomUserDefaults {

    var sharedPreference    : UserDefaults = UserDefaults.init(suiteName: "user-key-value")!
    let LAST_USER = "test"

    func test() {

        let value = Int64(20.0)
        self.setLastLoginClientId(value)

        let testValue = getLastLoginClientId()
        print(testValue) // 20.0
    }

    func setLastLoginClientId(_ value: Int64) {
        sharedPreference.set(value, forKey: LAST_USER)
    }

    func getLastLoginClientId() -> Int64? {
        return sharedPreference.value(forKey: LAST_USER) as? Int64
    }
}
...