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

时间:2017-02-08 12:58:44

标签: arrays swift nsuserdefaults

我的用户名是第一名,我已将其设置为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"]

但这不起作用。

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

谢谢!

2 个答案:

答案 0 :(得分:1)

UserDefaults.string(forKey:)

使用UserDefaults.string(forKey:)代替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:)返回Any?,您必须将其解包并转换为字符串。 UserDefaults.standard.string(forKey:)会将结果转换为String?,这可以简化您的代码。

nil-coalescing运算符??如果包含值,则展开String?结果,如果结果为nil,则返回默认值“YOU”。如果没有??运算符,如果没有为“firstName”存储UserDefault,它将返回nil,结果为“HEY nil”。

可选绑定

如果您想要在值存在或不存在的情况下有条件地运行代码,则可以对UserDefaults.string(forKey:)使用可选绑定。

if let firstName = UserDefaults.standard.string(forKey: "firstName") {
    print("\(firstName)")
}

答案 1 :(得分:0)

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