В вашем коде userDefaults
имеет тип [String]?
, а не String
, который должен быть поставлен на ""
. Двоичный оператор ==
может использоваться только между двумя экземплярами одного типа (этот тип должен использовать протокол Equatable для использования ==
).
Вы можете использовать этот фрагмент, чтобы проверить, что userDefaults
не nil
:
if let defaults = userDefaults {
persons = defaults
} else {
persons = [""]
}
Или с защитным заявлением:
guard let defaults = userDefaults else {
persons = [""]
return
}
persons = defaults
Ваша последняя функция будет выглядеть так:
func loadDefaults() {
let userDefaults = UserDefaults.standard.object(forKey: "storedArray") as? [String]
if let defaults = userDefaults {
persons = defaults
} else {
persons = [""]
}
}
или:
func loadDefaults() {
let userDefaults = UserDefaults.standard.object(forKey: "storedArray") as? [String]
guard let defaults = userDefaults else {
persons = [""]
return
}
persons = defaults
}
P.S: persons = [""]
означает, что persons
будет содержать один элемент, то есть ""
. Если вы хотите пустой массив, используйте это: persons = []