将 UserDefaults 中的字符串添加到已创建的数组中 Swift 3

Adding a string from UserDefaults into an already made array Swift 3

我有我的用户名字,我已经在 UserDefault 中设置了它,我这样称呼它..

let firstName = UserDefaults.standard.object(forKey: "firstName")

然后我有一个字符串数组,我想将用户的名字添加到其中..

var arrayOfTitle = ["HEY", "FIND EVENTS CLOSE TO YOU", "BOOK"]

我已经尝试过我认为它应该看起来像

var arrayOfTitle = ["HEY \(firstName)", "FIND EVENTS CLOSE TO YOU", "BOOK"]

但这不起作用。

有没有人能够推动我或示范让我朝着正确的方向前进。

谢谢!

UserDefaults.string(forKey:)

使用UserDefaults.string(forKey:) instead of UserDefaults.object(forKey:).

let firstName = UserDefaults.standard.string(forKey: "firstName") ?? "YOU"
var arrayOfTitle = ["HEY \(firstName)", "FIND EVENTS CLOSE TO YOU", "BOOK"]

UserDefaults.standard.object(forKey:) returns Any? 您必须将其解包并转换为字符串。 UserDefaults.standard.string(forKey:) 将结果转换为 String? 可以简化您的代码。

nil-coalescing 运算符 ?? 解包 String? 结果(如果它包含一个值),或者 returns 默认值 "YOU" 如果结果是 nil。如果没有 ?? 运算符,如果没有为 "firstName" 存储的 UserDefault,它将 return nil 导致 "HEY nil".

可选绑定

如果您想有条件地 运行 编码一个值是否存在,您可以使用 UserDefaults.string(forKey:) 的可选绑定。

if let firstName = UserDefaults.standard.string(forKey: "firstName") {
    print("\(firstName)")
}
if let name = UserDefaults.standard.object(forKey: "firstName") as? String{
    arrayOfTitle.append(name)
}