在 Swift 中保存为用户默认值

Saving to User Defaults in Swift

我目前正在尝试将数组保存为用户默认值。

这是我的代码:

//where things will be stored
let defaults = NSUserDefaults.standardUserDefaults()
var taskNames = [String]()
var taskPriorities = [Float]()

//this is the function that saves tasks
func saveTask() {
    println(taskNames)
    println(taskPriorities)
    defaults.setObject(taskNames, forKey: "taskName")
    defaults.setObject(taskPriorities, forKey: "taskPriorities")
    defaults.synchronize()
}

//this is the function that loads tasks
func loadTasks() {
    var taskNamesLoad = defaults.dataForKey("taskName")

    println(defaults.dataForKey("taskName"))
    println(taskNamesLoad)
}

当我调用函数加载数据时(当然是在用其他函数保存了一些数据之后),控制台的输出为 nil 并且用户默认值中没有保存数据。我该如何解决这个问题?

如果您要保存为用户默认值,则需要使用 plist 安全对象。因此,您需要使用 NSNumber.

而不是使用 Float

您应该使用 arrayForKeyobjectForKey 而不是 dataForKey。因为你存储的是 Array 对象,而不是 NSData.

如下所示:

func loadTasks() {
    var taskNamesLoad = defaults.arrayForKey("taskName")

    println(defaults.arrayForKey("taskName"))
    println(taskNamesLoad)
}