在 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
您应该使用 arrayForKey
或 objectForKey
而不是 dataForKey
。因为你存储的是 Array
对象,而不是 NSData
.
如下所示:
func loadTasks() {
var taskNamesLoad = defaults.arrayForKey("taskName")
println(defaults.arrayForKey("taskName"))
println(taskNamesLoad)
}
我目前正在尝试将数组保存为用户默认值。
这是我的代码:
//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
您应该使用 arrayForKey
或 objectForKey
而不是 dataForKey
。因为你存储的是 Array
对象,而不是 NSData
.
如下所示:
func loadTasks() {
var taskNamesLoad = defaults.arrayForKey("taskName")
println(defaults.arrayForKey("taskName"))
println(taskNamesLoad)
}