我目前正在开发一个用 Swift 开发的 iOS 应用程序,我需要在设备上存储一些用户创建的内容,但我似乎找不到一种简单快捷的方法来存储/接收设备上的用户内容。
有人可以解释如何存储和访问本地存储吗?
这个想法是在用户执行操作时存储数据并在应用程序启动时接收数据。
存储一些字符串或常见类型的最简单的解决方案是UserDefaults。
UserDefaults 类提供了方便的方法来访问浮点、双精度、整数、布尔值和 URL 等常见类型。
UserDefaults让我们根据我们选择的键存储对象,将这些键存储在可访问的地方是个好主意,这样我们就可以重用它们。
UserDefaults
钥匙
struct DefaultsKeys { static let keyOne = "firstStringKey" static let keyTwo = "secondStringKey" }
环境
let defaults = UserDefaults.standard defaults.set("Some String Value", forKey: DefaultsKeys.keyOne) defaults.set("Another String Value", forKey: DefaultsKeys.keyTwo)
得到
let defaults = UserDefaults.standard if let stringOne = defaults.string(forKey: DefaultsKeys.keyOne) { print(stringOne) // Some String Value } if let stringTwo = defaults.string(forKey: DefaultsKeys.keyTwo) { print(stringTwo) // Another String Value }
在 Swift 2.0UserDefaults中NSUserDefaults,setter 和 getter 的命名略有不同:
NSUserDefaults
let defaults = NSUserDefaults.standardUserDefaults() defaults.setObject("Some String Value", forKey: DefaultsKeys.keyOne) defaults.setObject("Another String Value", forKey: DefaultsKeys.keyTwo)
let defaults = NSUserDefaults.standardUserDefaults() if let stringOne = defaults.stringForKey(DefaultsKeys.keyOne) { print(stringOne) // Some String Value } if let stringTwo = defaults.stringForKey(DefaultsKeys.keyTwo) { print(stringTwo) // Another String Value }
对于比次要配置更严重的事情,您应该考虑使用更强大的持久存储: