Swift 用户默认值 - 数组
Swift user defaults - array
以下代码出现错误
Binary operator '==' cannot be applied to operands of type '[String]?'
and 'String'
func loadDefaults() {
let userDefaults = UserDefaults.standard.object(forKey: "storedArray") as? [String]
if (userDefaults == "") || userDefaults != nil{
persons = userDefaults!
}else{
persons = [""]
}
}
在您的代码中,userDefaults
属于 [String]?
类型,而不是 String
类型,可以与 ""
进行比较。二元运算符==
只能在相同类型的两个实例之间使用(此类型必须采用Equatable协议才能使用==
)。
您可以使用此代码段来检查 userDefaults
不是 nil
:
if let defaults = userDefaults {
persons = defaults
} else {
persons = [""]
}
或者使用 guard 语句:
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 = []
首先有一个专门的方法array(forKey
来检索数组。
一个空数组 isEmpty
,不能与空数组 String
进行比较
如果你想加载存储的数组或在找不到对象时分配一个空数组,请使用
func loadDefaults() {
// a variable name userDefaults for the array is confusing
if let storedArray = UserDefaults.standard.array(forKey: "storedArray") as? [String] {
persons = storedArray
} else {
persons = []
}
}
或更短
func loadDefaults() {
persons = UserDefaults.standard.array(forKey: "storedArray") as? [String] ?? []
}
以下代码出现错误
Binary operator '==' cannot be applied to operands of type '[String]?' and 'String'
func loadDefaults() {
let userDefaults = UserDefaults.standard.object(forKey: "storedArray") as? [String]
if (userDefaults == "") || userDefaults != nil{
persons = userDefaults!
}else{
persons = [""]
}
}
在您的代码中,userDefaults
属于 [String]?
类型,而不是 String
类型,可以与 ""
进行比较。二元运算符==
只能在相同类型的两个实例之间使用(此类型必须采用Equatable协议才能使用==
)。
您可以使用此代码段来检查 userDefaults
不是 nil
:
if let defaults = userDefaults {
persons = defaults
} else {
persons = [""]
}
或者使用 guard 语句:
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 = []
首先有一个专门的方法array(forKey
来检索数组。
一个空数组 isEmpty
,不能与空数组 String
如果你想加载存储的数组或在找不到对象时分配一个空数组,请使用
func loadDefaults() {
// a variable name userDefaults for the array is confusing
if let storedArray = UserDefaults.standard.array(forKey: "storedArray") as? [String] {
persons = storedArray
} else {
persons = []
}
}
或更短
func loadDefaults() {
persons = UserDefaults.standard.array(forKey: "storedArray") as? [String] ?? []
}