跨应用程序更新持久存储用户数据的位置 (iOS)?
Where to store user data persistently across app updates (iOS)?
我正在编写一个包含本地数据库的应用程序。我想让用户可以为这个数据库中的某些项目添加书签,并且这些书签不会在每次应用程序(以及数据库)更新时消失。这种情况下最好的解决方案是什么?
跨应用程序重启保留数据的最简单方法是使用 UserDefaults。在您的情况下,您可以将自定义数据类型存储在 UserDefaults 键中,如下所示:
- 初始化默认对象
let defaults = UserDefaults.standard
- 为您的数据创建自定义数据类型(需要可编码)
struct Bookmark: Codable {
let name: String
let url: String
}
struct Bookmarks: Codable {
let bookmarks: [Bookmark]
}
- 保存数据如下
// data is of type Bookmarks here
if let encodedData = try? JSONEncoder().encode(data) {
defaults.set(encodedData, forKey: "bookmarks")
}
- 稍后检索数据
if let savedData = defaults.object(forKey: "bookmarks") as? Data {
if let savedBookmarks = try? JSONDecoder().decode(Bookmarks.self, from: savedData) {
print("Saved user: \(savedBookmarks)")
}
}
我正在编写一个包含本地数据库的应用程序。我想让用户可以为这个数据库中的某些项目添加书签,并且这些书签不会在每次应用程序(以及数据库)更新时消失。这种情况下最好的解决方案是什么?
跨应用程序重启保留数据的最简单方法是使用 UserDefaults。在您的情况下,您可以将自定义数据类型存储在 UserDefaults 键中,如下所示:
- 初始化默认对象
let defaults = UserDefaults.standard
- 为您的数据创建自定义数据类型(需要可编码)
struct Bookmark: Codable {
let name: String
let url: String
}
struct Bookmarks: Codable {
let bookmarks: [Bookmark]
}
- 保存数据如下
// data is of type Bookmarks here
if let encodedData = try? JSONEncoder().encode(data) {
defaults.set(encodedData, forKey: "bookmarks")
}
- 稍后检索数据
if let savedData = defaults.object(forKey: "bookmarks") as? Data {
if let savedBookmarks = try? JSONDecoder().decode(Bookmarks.self, from: savedData) {
print("Saved user: \(savedBookmarks)")
}
}