Вы должны использовать те же ключи при добавлении / получении объекта.При сохранении вы используете другой ключ, т.е. 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)!)