请使用新的 Stores 库来代替。
你肯定喜欢 Swift 的 Codable
协议,并且到处都在使用它,谁不喜欢呢!这里提供了一个简单轻便的方法,只需几行代码即可存储和检索**适量😅**的 Codable
对象!
UserDefaultsStore
和 SingleUserDefaultsStore
都是线程安全的!Package.swift
文件中dependencies: [
.package(url: "https://github.com/omaralbeik/UserDefaultsStore.git", from: "3.0.0")
]
$ swift build
将 Sources 文件夹添加到你的 Xcode 项目中。
假设你有 2 个结构体;User
和 Laptop
如下定义
struct User: Codable {
var id: Int
var firstName: String
var lastName: String
var laptop: Laptop?
}
struct Laptop: Codable {
var model: String
var name: String
}
以下是如何在 UserDefaultsStore 中存储它们
Identifiable
协议让 UserDefaultsStore 知道每个对象的唯一 ID 是什么。
struct User: Codable, Identifiable {
...
}
struct Laptop: Codable, Identifiable {
var id: String { model }
...
}
let usersStore = UserDefaultsStore<User>(uniqueIdentifier: "users")
let laptopsStore = UserDefaultsStore<Laptop>(uniqueIdentifier: "laptops")
let macbook = Laptop(model: "A1278", name: "MacBook Pro")
let john = User(id: 1, firstName: "John", lastName: "Appleseed", laptop: macbook)
// Save an object to a store
try! usersStore.save(john)
// Save an array of objects to a store
try! usersStore.save([jane, steve, jessica])
// Get an object from store
let user = store.object(withId: 1)
let laptop = store.object(withId: "A1278")
// Get all objects in a store
let laptops = laptopsStore.allObjects()
// Check if store has an object
print(usersStore.hasObject(withId: 10)) // false
// Iterate over all objects in a store
laptopsStore.forEach { laptop in
print(laptop.name)
}
// Delete an object from a store
usersStore.delete(withId: 1)
// Delete all objects in a store
laptops.deleteAll()
// Know how many objects are stored in a store
let usersCount = usersStore.objectsCount
使用 SingleUserDefaultsStore
,它可以存储和检索 Int
、Double
、String
或任何 Codable
类型的单个值。
特别感谢
图标由 freepik 制作,来自 flaticon.com。
UserDefaultsStore 基于 MIT 许可证发布。有关更多信息,请参阅 LICENSE。