Firebase ID в Userdefaults - PullRequest
       0

Firebase ID в Userdefaults

0 голосов
/ 04 декабря 2018

Я не могу прочитать и записать идентификатор узла firebase в userdefaults

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")!)

есть идеи, как читать и записывать идентификатор узла в пользовательских настройках по умолчанию?

1 Ответ

0 голосов
/ 04 декабря 2018

Вы должны использовать те же ключи при добавлении / получении объекта.При сохранении вы используете другой ключ, т.е. userId и извлекаете userID, так как userId! = userID вы получите nil для этого ключа.

Лучшим решением было бы создатьперечисление для UserDefaults ключей, как показано ниже,

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

Расширение UserDefaults до set и get значения с использованием типа элемента перечисления,

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)!)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...