Посмотрите документацию для UserDefaults string(forKey:)
.Он имеет тип возврата String?
.Он возвращает необязательное значение, поскольку для данного ключа может не быть значения.
Таким образом, ваша попытка назначить String?
для String
приводит к ошибке.Принудительная распаковка (добавление !
) устраняет ошибку, но это наихудшее из возможных решений, потому что теперь ваше приложение будет аварийно завершать работу, если для ключа нет значения.
Вы должны правильно обработать ситуацию, когда нетзначение для ключа в UserDefaults
.
Вы можете назначить значение по умолчанию:
let jbEmail = userDefaults.string(forKey: "JBemail_preference") ?? "Some Default"
Или вы можете условно обработать, если значение отсутствует:
if let jbEmail = userDefaults.string(forKey: "JBemail_preference") {
// Do something with jbEmail
} else {
// There is no value, do something else
}