来自UserDefault的类型转换值抛出错误

时间:2019-01-31 09:54:12

标签: ios swift userdefaults

我正在尝试从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 :(得分:2)

我认为您可以做些简单的事情

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
    }
}