gpt4 book ai didi

swift - 用户默认值中的 Firebase ID

转载 作者:行者123 更新时间:2023-11-28 07:34:25 38 4
gpt4 key购买 nike

我无法在 userdefaults 中读取和写入 firebase 节点 ID

let userRef = recordRef.child("users")

let userRecord = userRef.childByAutoId()
let newUserId = userRecord.key
let newUserDict = ["id": newUserId , "username": "admin" , "password": password , "userType": "power" , "active": "yes"]
let newUser = Users(dictionary: newUserDict as [String: Any])
userRecord.setValue(newUser.toDictionary())

let userdefault = UserDefaults.standard //adding login details in defaults for auto login
userdefault.set(id!, forKey: "schoolId")
userdefault.set(code, forKey: "schoolCode")
userdefault.set("admin", forKey: "username")
userdefault.set(password, forKey: "password")
userdefault.set("power", forKey: "userType")
userdefault.set(newUserId!, forKey: "userId")

现在,当我尝试读取 schoolId 或 newUserID 时,出现 NIL 值错误

print(userDefaults.string(forKey: "userID")!)
print(userDefaults.string(forKey: "userType")!)

知道如何在用户默认值中读取和写入节点 ID 吗?

最佳答案

您应该在添加/检索对象时使用相同的键。您在保存时使用不同的 key ,即 userId 和检索 userID 所以因为 userId != userID 你会得到nil 此 key 。

更好的解决方案是为 UserDefaults 键创建一个枚举,如下所示,

enum UserDefaultKey: String {
case schoolId
case schoolCode
case username
}

扩展 UserDefaults 以使用枚举项类型设置获取值,

extension UserDefaults {

public func set<T>(_ value: T?, forKey: UserDefaultKey) {
self.set(value, forKey: forKey.rawValue)
}

public func value<T>(ofType: T.Type, for key: UserDefaultKey) -> T? {
return self.value(forKey: key.rawValue) as? T
}
}

然后你可以像下面这样使用这些键,

let userdefault = UserDefaults.standard
userdefault.set("YYYYY", forKey: .schoolId)
userdefault.set("Kam", forKey: .username)

print(userdefault.value(ofType: String.self, for: .schoolId)!)
print(userdefault.value(ofType: String.self, for: .username)!)

关于swift - 用户默认值中的 Firebase ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53605660/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com