一尘不染

如何在Swift应用程序中保存本地数据?

swift

我目前正在使用Swift开发的iOS应用程序,需要在设备上存储一些用户创建的内容,但似乎找不到一种简单快捷的方法来在设备上存储/接收用户内容。

有人可以解释如何存储和访问本地存储吗?

想法是在用户执行操作时存储数据,并在应用程序启动时接收数据。


阅读 660

收藏
2020-07-07

共1个答案

一尘不染

如果仅存储两个字符串NSUserDefaults,最简单的解决方案是,在Swift 3中,该类已重命名为just UserDefaults

最好将密钥存储在全局位置,以便您可以在代码的其他位置重用它们。

struct defaultsKeys {
    static let keyOne = "firstStringKey"
    static let keyTwo = "secondStringKey"
}

Swift 3.0、4.0和5.0

// Setting

let defaults = UserDefaults.standard
defaults.set("Some String Value", forKey: defaultsKeys.keyOne)
defaults.set("Another String Value", forKey: defaultsKeys.keyTwo)

// Getting

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
}

雨燕2.0

// Setting

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("Some String Value", forKey: defaultsKeys.keyOne)
defaults.setObject("Another String Value", forKey: defaultsKeys.keyTwo)

// Getting

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
}

对于比次要配置,标志或基本字符串更严重的事情,您应该使用某种持久存储-
目前流行的选择是Realm,但您也可以使用SQLite或Apple自己的CoreData

2020-07-07